在UITableView的didSelectRow之前调用Storyboard segue

时间:2012-11-20 14:30:55

标签: ios storyboard tableview didselectrowatindexpath

我有一个带有来自表格单元格的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]];


}

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

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

2 个答案:

答案 0 :(得分:14)

不要从Cell创建Segue到新VC,而是将Segue从旧VC设置为新VC并为segue指定标识符。

然后在

didSelectRowAtIndexPath你可以致电

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

答案 1 :(得分:14)

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