故事板segue在UITableView的didSelectRow之前被调用

我有一个从单元格segue故事板。 我想设置一些属性与一些数据,当一行被选中,所以我做了以下几点:

- (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]]; } 

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

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

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

然后在里面

didSelectRowAtIndexPath可以调用

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

Rawkode的答案是一个好的解决scheme – 另一种方法是,在prepareForSegue: ,可以访问表视图的选定行( sender参数将是表视图单元格,然后可以执行[self.tableView indexPathForCell:(UITableViewCell*)sender]得到索引path),并设置你在这一点上需要的任何东西。