来自accessoryButton的segue的IndexPath

时间:2012-02-18 06:53:48

标签: iphone storyboard

我正在尝试使用storyboard / segue来处理UITableView与标准转换以及详细信息披露按钮之间的转换。在这里阅读了几篇不同的帖子后,我就这样设置了我的项目:

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

    -(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
        [self performSegueWithIdentifier:@"DetailSegue" sender:self];
    }
    
  5. 这很有效,我的prepareForSegue: sender:按预期调用。麻烦的是,我需要知道所选元素的indexPath。来自UITableViewCell的segue检索indexPath,如下所示:

    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    

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

    我基于此部分代码的原始问题是:Detail Disclosure Button and Segues

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

2 个答案:

答案 0 :(得分:16)

您不必覆盖accessoryButtonTappedForRowWithIndexPath

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

[self.tableView indexPathForSelectedRow]

使用:

[self.tableView indexPathForCell:sender]

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

答案 1 :(得分:13)

sender参数是根据文档:

  

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

我没有看到任何理由不能将索引路径用作发件人而不是self,然后访问prepareForSegue:中的索引路径。

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

中的路径