5

我有一个带有表格单元格的故事板。我想在选择一行时使用一些数据设置一些属性,所以我执行以下操作:

    - (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 在执行委托方法之前推送视图。

我怎样才能解决这个问题?

4

2 回答 2

15

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

于 2012-11-20T14:40:08.770 回答
14

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

那么内

didSelectRowAtIndexPath你可以打电话

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

于 2012-11-20T14:34:32.603 回答