【问题标题】:Storyboard segue gets called before UITableView's didSelectRow在 UITableView 的 didSelectRow 之前调用 Storyboard segue
【发布时间】:2012-11-08 15:32:49
【问题描述】:

我有一个从表格单元格中转接的情节提要。我想在选择一行时使用一些数据设置一些属性,所以我执行以下操作:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [[ProperyManager sharedPropertyManager]setSelectedRow:[verseIds objectAtIndex:indexPath.row]];
    [[ProperyManager sharedPropertyManager]setID:[poemIDs objectAtIndex:indexPath.row]];
    [[ProperyManager sharedPropertyManager]setRowToReturn:[NSString stringWithFormat:@"%i",indexPath.row]];


}

问题是,目标视图控制器的视图控制器生命周期方法(viewWillAppear 等)在上面的 didSelectRow 方法之前被调用,因为 segue 在委托方法执行之前推送视图。

我该如何解决这个问题?

【问题讨论】:

    标签: ios storyboard tableview didselectrowatindexpath


    【解决方案1】:

    Rawkode 的答案是一个很好的解决方案 - 另一种方法是,在 prepareForSegue: 中,您可以访问表格视图的选定行(sender 参数将是表格视图单元格,然后您可以执行 [self.tableView indexPathForCell:(UITableViewCell*)sender]获取索引路径)并在此时设置您需要的任何内容。

    【讨论】:

    • 感谢您的回答帮助我弄清楚了其他事情并了解了更多:)
    【解决方案2】:

    不要创建从 Cell 到新 VC 的 Segue,而是将 Segue 从旧 VC 设置到新 VC 并给 segue 一个标识符。

    然后在

    didSelectRowAtIndexPath你可以拨打

    [self performSegueWithIdentifier:@"Segue" sender:self]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      • 2017-04-02
      • 1970-01-01
      相关资源
      最近更新 更多