13

我已经使用 NSFetchedResultsController 设置了一个 UITableView,它显示了许多原型 UITableViewCell。我已经连接了从 UITableViewCell 到 DetailViewController 的 push 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 链接到控制器时,我仍然无法让它触发。

4

2 回答 2

31

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

对于发现在 a 中选择 a 不会调用关联的 segue 的任何其他人UITableViewCellUITableView检查您的单元格标识符是否在情节提要和tableView:cellForRowAtIndexPath:.

于 2012-02-23T10:56:55.500 回答
6

从自身重新连接你的 segueViewController并给它一个名字。然后在didSelectRow方法调用 中

[self performSegueWithIdentifier:@"yourSegueName"];    

看看它是否着火。

于 2012-02-22T20:09:35.867 回答