当选择UITableView行时,是否调用prepareForSegue?

时间:2012-02-22 18:05:30

标签: iphone objective-c uitableview segue

我使用NSFetchedResultsController设置了一个UITableView,它显示了许多原型UITableViewCells。我已经从我的UITableViewCell连接到我的DetailViewController的推送segue。

在我的TableViewController中,我实现了两个:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"%s", __PRETTY_FUNCTION__);
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    NSLog(@"%s", __PRETTY_FUNCTION__);
}

当我运行应用程序并单击tableView中的一行时,我的应用程序只调用:

[TableViewController tableView:didSelectRowAtIndexPath:]
[TableViewController tableView:didSelectRowAtIndexPath:]
[TableViewController tableView:didSelectRowAtIndexPath:]

如果我删除segue并将其重新连接,形成一个UIBarButtonItem到DetailViewController,那么segue被正确调用,任何人都可以想到我缺少的东西吗?

编辑:

添加了:

- (IBAction)tester:(id)sender {
    [self performSegueWithIdentifier:@"SEGTEST" sender:nil];
}

并将它连接到一个名为“tester”的UIButtonBarItem并且它可以正常工作,当我从UITableViewCell链接到控制器时,我无法激活它。

2 个答案:

答案 0 :(得分:31)

经过一番挖掘后,我发现UITableViewCell标识符错误地设置为“CELL_ID”时应该是“PLANTCELL_ID”。

对于发现在UITableViewCell中选择UITableView而未调用关联的segue的其他人,检查您是否在故事板和{{1}中正确设置了您的小区标识符}}

答案 1 :(得分:6)

ViewController本身重新连接您的segue,并为其命名。 然后在didSelectRow方法调用

[self performSegueWithIdentifier:@"yourSegueName"];    

然后看它是否会发射。