【发布时间】:2012-02-22 18:05:30
【问题描述】:
我已经使用 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 链接到控制器时,我仍然无法让它触发。
【问题讨论】:
-
喜欢我下面的回答。为什么不直接将它从 ViewController 链接到 ViewController 并在 didSelectCell 方法中调用它呢?
-
我猜是可以的,我更好奇为什么它没有触发。我可以看到这个版本和我拥有的工作版本之间的唯一区别是这个版本使用 Core Data 和 UIFetchedResultsController,虽然我看不出这应该有什么关系。
标签: iphone objective-c uitableview segue