gpt4 book ai didi

ios - performSegueWithIdentifier 根本不工作

转载 作者:行者123 更新时间:2023-11-28 17:34:12 26 4
gpt4 key购买 nike

您好,我正在尝试根据用户的选择推送到不同的 View 。我有一个 TableView ,其中有 4 个其他 View Controller 通过 Storyboard中的推送 segues 链接到它。所有 Segues 都直接链接到 TableView View Controller 。根据选择的单元格,它会加载相应的 View 。这是我正在使用的代码:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{


NSDictionary *dictionary = [_articles objectAtIndex:indexPath.row];
NSArray *selectedKey = [dictionary objectForKey:@"Key"];


if ([selectedKey isEqual:@"Driver"]){

self.driverDetailView.wikiItem = dictionary;
[self.driverDetailView performSegueWithIdentifier:@"pushDriver" sender:dictionary];
NSLog(@"Push Driver");
}

if ([selectedKey isEqual:@"Team"]) {
NSLog(@"Push Team");
}
}


-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

NSLog(@"Preparing For Segue");
if ([[segue identifier] isEqual:@"pushDriver"]) {
self.driverDetailView=segue.destinationViewController;
}

}

出于某种原因

 [self.driverDetailView performSegueWithIdentifier:@"pushDriver" sender:dictionary];
NSLog(@"Push Driver");

不允许我在开始时设置为“Self”,我收到一条错误消息:

No Visible @interface for TableCell declares the selector performSegueWithIdentifier

如果我使用“self.driverDetailView”我不会收到错误,但是当我选择单元格时什么也没有发生。

这是 Horizo​​ntalTableView.h

#import <UIKit/UIKit.h>
#import "HorizontalDetailView.h"
#import "HorizontalTableCell.h"
@interface HorizontalTableView : UITableViewController <UITableViewDelegate, UITableViewDataSource> {

NSDictionary *_articleDictionary;
NSMutableArray *_reusableCells;

}

@property (nonatomic, retain) NSDictionary *articleDictionary;
@property (nonatomic, retain) NSMutableArray *reusableCells;


@end

这是 Horizo​​ntalTableView.m

#import "HorizontalTableView.h"
#import "HorizontalTableCell.h"
#import "ControlVariables.h"
#import "HorizontalDetailView.h"

#define kHeadlineSectionHeight 26
#define kRegularSectionHeight 18

@interface HorizontalTableView ()

@end

@implementation HorizontalTableView
@synthesize articleDictionary = _articleDictionary;
@synthesize reusableCells = _reusableCells;



- (void)awakeFromNib{
[self.tableView setBackgroundColor:kVerticalTableBackgroundColor];
self.tableView.rowHeight = kCellHeight + (kRowVerticalPadding * 0.5) + ((kRowVerticalPadding * 0.5) * 0.5);
}

- (id)initWithStyle:(UITableViewStyle)style{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}

- (void)viewDidLoad{
[super viewDidLoad];

self.articleDictionary = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"]];
}

- (void)viewDidUnload{
[super viewDidUnload];

self.articleDictionary = nil;
self.reusableCells = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation{

return (interfaceOrientation == UIInterfaceOrientationPortrait);
}



- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

return [self.articleDictionary.allKeys count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"HorizontalCell";

HorizontalTableCell *cell = (HorizontalTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil){
cell = [[HorizontalTableCell alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, tableView.frame.size.height)];
}

NSSortDescriptor* sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:nil ascending:YES selector:@selector(localizedCompare:)];
NSArray* sortedCategories = [self.articleDictionary.allKeys sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

NSString *categoryName = [sortedCategories objectAtIndex:indexPath.section];

NSArray *currentCategory = [self.articleDictionary objectForKey:categoryName];

cell.articles = currentCategory;

return cell;
}


- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{

return section == 0 ? kHeadlineSectionHeight : kRegularSectionHeight;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{

UIView *customSectionHeaderView;
UILabel *titleLabel;
UIFont *labelFont;

if (section == 0)
{
customSectionHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, kHeadlineSectionHeight)];

titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, tableView.frame.size.width, kHeadlineSectionHeight)];
labelFont = [UIFont boldSystemFontOfSize:20];
}
else
{
customSectionHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, kRegularSectionHeight)];

titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, tableView.frame.size.width, kRegularSectionHeight)];

labelFont = [UIFont boldSystemFontOfSize:14];
}

customSectionHeaderView.backgroundColor = [UIColor colorWithRed:0.01176471 green:0.01176471 blue:0.01960784 alpha:0.95];

titleLabel.textAlignment = UITextAlignmentLeft;
[titleLabel setTextColor:[UIColor whiteColor]];
[titleLabel setBackgroundColor:[UIColor clearColor]];
titleLabel.font = labelFont;

NSSortDescriptor* sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:nil ascending:YES selector:@selector(localizedCompare:)];
NSArray* sortedCategories = [self.articleDictionary.allKeys sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

NSString *categoryName = [sortedCategories objectAtIndex:section];

titleLabel.text = [categoryName substringFromIndex:1];

[customSectionHeaderView addSubview:titleLabel];


return customSectionHeaderView;
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

NSLog(@"Preparing For Segue");
}

@end

Horizo​​ntalTableCell.h 的代码是:

#import <UIKit/UIKit.h>
#import "HorizontalDetailView.h"
#import "DriverDetailView.h"
#import "HorizontalTableView.h"
@interface HorizontalTableCell : UITableViewCell <UITableViewDelegate, UITableViewDataSource> {

UITableView *_horizontalTableView;
NSMutableArray *_articles;
HorizontalTableCell *horizontalTableCell;

}


@property (nonatomic, strong) UITableView *horizontalTableView;
@property (nonatomic, strong) NSMutableArray *articles;
@property (nonatomic, strong) HorizontalDetailView *horizontalDetailView;
@property (nonatomic, strong) DriverDetailView *driverDetailView;
@property (nonatomic, strong) HorizontalTableCell *horizontalTableCell;
@end

Horizo​​ntalTableCell.m 的代码是:

#import "HorizontalTableCell.h"
#import "ControlVariables.h"
#import "ArticleCell.h"
#import "HorizontalDetailView.h"
@implementation HorizontalTableCell

@synthesize horizontalTableView = _horizontalTableView;
@synthesize articles = _articles;
@synthesize horizontalDetailView;
@synthesize driverDetailView;
@synthesize horizontalTableCell;

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [self.articles count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"Cell";

ArticleCell *cell = (ArticleCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil){
cell = [[ArticleCell alloc] initWithFrame:CGRectMake(0, 0, kCellWidth, kCellHeight)];
}

NSDictionary *currentArticle = [self.articles objectAtIndex:indexPath.row];

cell.thumbnail.image = [UIImage imageNamed:[currentArticle objectForKey:@"Image"]];
cell.titleLabel.text = [currentArticle objectForKey:@"Title"];

return cell;
}

- (void)dealloc{
self.horizontalTableView = nil;
self.articles = nil;
}

- (NSString *) reuseIdentifier{
return @"HorizontalCell";
}

- (id)initWithFrame:(CGRect)frame{
if ((self = [super initWithFrame:frame])){
self.horizontalTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, kCellHeight, kTableLength)];
self.horizontalTableView.showsVerticalScrollIndicator = NO;
self.horizontalTableView.showsHorizontalScrollIndicator = NO;
self.horizontalTableView.transform = CGAffineTransformMakeRotation(-M_PI * 0.5);
[self.horizontalTableView setFrame:CGRectMake(kRowHorizontalPadding * 0.5, kRowVerticalPadding *
0.5, kTableLength - kRowHorizontalPadding, kCellHeight)];

self.horizontalTableView.rowHeight = kCellWidth;
self.horizontalTableView.backgroundColor = kHorizontalTableBackgroundColor;

self.horizontalTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
self.horizontalTableView.separatorColor = [UIColor clearColor];

self.horizontalTableView.dataSource = self;
self.horizontalTableView.delegate = self;
[self addSubview:self.horizontalTableView];
}

return self;
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

NSDictionary *dictionary = [_articles objectAtIndex:indexPath.row];
NSArray *selectedKey = [dictionary objectForKey:@"Key"];
// NSLog(@"Selected Key = %@",selectedKey);

if ([selectedKey isEqual:@"Driver"]){

self.driverDetailView.wikiItem = dictionary;
[self performSegueWithIdentifier:@"pushDriver" sender:self];
NSLog(@"Push Driver");
}

if ([selectedKey isEqual:@"Team"]) {
NSLog(@"Push Team");
}

if ([selectedKey isEqual:@"Tech"]) {
NSLog(@"Push Tech");
}

if ([selectedKey isEqual:@"Track"]) {
NSLog(@"Push Track");
}

//self.horizontalDetailView.wikiItem = dictionary;

// NSLog(@"selected Array = %@",dictionary);

}


-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

NSLog(@"Preparing For Segue");
if ([[segue identifier] isEqual:@"pushDriver"]) {
self.driverDetailView=segue.destinationViewController;
}
}

@end

最佳答案

如果我没理解错的话,您的转场已连接到表格 View 单元格。如果那是对的,我建议将它们从 View Controller 本身连接到目标 View Controller ,然后调用 [self performSegueWithIdentifier:@"pushDriver"]; 在你的 didSelectRowAtIndexPath:方法。

关于ios - performSegueWithIdentifier 根本不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10305842/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com