0

我最近开始了 iOS 应用程序开发。

我有一个关于从 UITableViewController 到 UIViewController 的问题。单击表格单元格时不会调用“prepareForSegue”。

在我看来,代码和界面构建器设置很好。Segue ID 已正确设置。我还在 navigationVC 中嵌入了 UITableVC。我在 prepareForSegue 中设置了断点,但它并没有停在那里,也没有生成日志。

通过在互联网上研究提示,我了解到使用 didSelectRowAtIndexPath 是解决我问题的方法之一。但我想通过使用情节提要来了解解决方案。

这可能是一个基本问题,但如果有人可以给我一些提示,那可能会很有帮助。

谢谢你,

@interface test2TVC ()
@property(strong,nonatomic) NSArray *items;
@end

@implementation test2TVC
- (void)viewDidLoad
{
    [super viewDidLoad];
     self.items = @[@"item1", @"item2", @"item3", @"item4",
               @"item5", @"item6", @"item7", @"item8"];

}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"test log");
}  

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     static NSString *CellIdentifier = @"Cell";
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    cell.textLabel.text = [self.items objectAtIndex:indexPath.row];
    return cell;
}
@end
4

2 回答 2

1

当我使用:

[self.tableView registerClass:[UITableViewCell 类] forCellReuseIdentifier:CellIdentifier]; 在 viewDidLoad

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath] in cellForRowAtIndexPath

prepareForSegue 不会被调用。

当我删除 viewDidLoad 中的 registerClass 行时,

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

在 cellForRowAtIndexPath 中,将调用 prepareForSegue,其他设置都相同。

于 2014-01-21T02:07:02.517 回答
0

确保您在 Mainstoryboard 中嵌入了 UITableViewController 导航控制器。或者尝试在项目的 rootViewController 中嵌入导航控制器。然后在 tableviewcell 中设置重用标识符。有什么问题请分享。

于 2013-08-16T12:03:18.730 回答