viewDidLoad在didSelectRowAtIndexPath之前被调用

问题描述:

我有 viewDidLoad(下一个tableView的)被调用之前didSelectRowAtIndexPath(当前tableView)。viewDidLoad在didSelectRowAtIndexPath之前被调用

我正在使用'singleton'来保存我的模型,到目前为止这一直工作得很好。我试图通过didSelectRowAtIndexPath中的变量设置,将当前表中选中的行didSelectRowAtIndexPath传递到目标tableview(它们通过故事板中的segue链接)。

但是,在我可以设置行号之前调用目的地tableviewviewDidLoad。稍后调用didSelectRowAtIndexPath,但是到那时我已经为目标表设置了我的数据(错误地)。

+0

你能发表一些你的代码吗? –

+0

是的,请张贴一些代码来进一步解释。在我看来,像你的segue出现问题(如果你确实有一个)请详细说明。 –

当使用segues时,您不需要didSelectRowAtIndexPath:。您只需将赛格连接到IB中的单元格。在代码只是使用:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    CustomViewController *newVC = [segue destinationViewController]; 
    newVC.property = theDataYouWantToPass; 
} 

您可以通过所传递的sender变量检索您行。

UITableViewCell *cell = (UITableViewCell *) sender; 
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; 
NSInteger myRow = indexPath.row; 
+0

谢谢蒙迪,完美。我开始认为我做了一些真正调皮的事情。为什么我不需要使用didSelectRowAtIndexPath? – Ian

+0

这是传统的方法,如果你愿意的话。你可以在IB中删除你的segue,而使用'didSelectRowAtIndexPath'。当使用segues时,它根本就没有必要 - 或者你可以用它做不同的事情。 – Mundi

+0

考虑勾选复选标记,如果这解决了您的问题。 – Mundi