我正在尝试使用storyboard / segue来处理UITableView与标准转换以及详细信息披露按钮之间的转换。在这里阅读了几篇不同的帖子后,我就这样设置了我的项目:
按如下方式实施accessoryButtonTappedForRowWithIndexPath
:
-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
[self performSegueWithIdentifier:@"DetailSegue" sender:self];
}
这很有效,我的prepareForSegue: sender:
按预期调用。麻烦的是,我需要知道所选元素的indexPath。来自UITableViewCell的segue检索indexPath,如下所示:
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
不幸的是,当我尝试调用accessoryButton时,会返回null
。
我基于此部分代码的原始问题是:Detail Disclosure Button and Segues
是否有tableView的方法返回accessoryButtons的indexPath?我是否需要以其他方式访问indexPath?
答案 0 :(得分:16)
您不必覆盖accessoryButtonTappedForRowWithIndexPath
。
在prepareForSegue
中,使用详细信息披露按钮时,而不是:
[self.tableView indexPathForSelectedRow]
使用:
[self.tableView indexPathForCell:sender]
发件人已经是详细信息披露按钮的单元格。
答案 1 :(得分:13)
sender
参数是根据文档:
要用于启动segue的对象。在实际的segue期间,此对象可用于提供信息。
我没有看到任何理由不能将索引路径用作发件人而不是self
,然后访问prepareForSegue:
中的索引路径。
如果这不起作用,请将索引路径存储在ivar中并访问prepareForSegue