来自accessoryButton的segue的IndexPath

val*_*rin 9 iphone storyboard

我试图使用storyboard/segue来处理UITableView与标准转换以及详细信息披露按钮之间的转换.在这里阅读了几个不同的帖子后,我以这种方式设置了我的项目:

  1. 绑定UITableViewCell和ViewController之间的主要segue
  2. 将辅助segue从父ViewController绑定到新的ViewController
  3. 实施accessoryButtonTappedForRowWithIndexPath如下:

    -(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
        [self performSegueWithIdentifier:@"DetailSegue" sender:self];
    }
    
    Run Code Online (Sandbox Code Playgroud)

这很好用,我prepareForSegue: sender:按预期调用.麻烦的是,我需要知道所选元素的indexPath.来自UITableViewCell的segue检索indexPath,如下所示:

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我尝试调用accessoryButton时,返回null.

我基于这些代码的原始问题是:详细信息披露按钮和Segues

是否有tableView的方法返回accessoryButtons的indexPath?我是否需要以其他方式访问indexPath?

Ada*_*dam 16

你不必覆盖accessoryButtonTappedForRowWithIndexPath.

prepareForSegue使用详细信息披露按钮时,而不是:

[self.tableView indexPathForSelectedRow]
Run Code Online (Sandbox Code Playgroud)

使用:

[self.tableView indexPathForCell:sender]
Run Code Online (Sandbox Code Playgroud)

发件人已经是详细信息披露按钮的单元格.

  • 谢谢亚当,这应该是公认的答案! (2认同)

jrt*_*ton 13

sender参数是,根据文档:

要用于启动segue的对象.在实际segue期间,此对象可用于提供信息.

我没有看到任何原因你不能使用索引路径作为发送者而不是self,然后访问索引路径prepareForSegue:.

如果这不起作用,请将索引路径存储在ivar中并访问其中 prepareForSegue