我有一个带有来自表格单元格的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在执行委托方法之前推送视图。
我怎样才能解决这个问题?
答案 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]
以获取索引路径)并在此时设置您需要的任何内容。