在 didSelectRowAtIndexPath 之前调用 viewDidLoad
Posted
技术标签:
【中文标题】在 didSelectRowAtIndexPath 之前调用 viewDidLoad【英文标题】:viewDidLoad being called before didSelectRowAtIndexPath 【发布时间】:2012-01-26 09:37:05 【问题描述】:我有
viewDidLoad
(下一个 tableView)在 didSelectRowAtIndexPath
(当前 tableView
)之前被调用。
我正在使用“单例”来保存我的模型,到目前为止,这一直运行良好。我试图通过didSelectRowAtIndexPath
中的变量设置,将didSelectRowAtIndexPath
中当前表中选择的行传递给目标tableview
(它们由情节提要中的segue 链接)。
但是,在我设置行号之前,会调用目标 tableview
的 viewDidLoad
。 didSelectRowAtIndexPath
稍后被调用,但到那时我已经(错误地)为目标表设置了我的数据。
【问题讨论】:
您可以为此发布一些代码吗? 是的,请发布一些代码来进一步解释这一点。在我看来,你的 segue 出了点问题(如果你确实有一个),请提供更多详细信息。 【参考方案1】:使用 segue 时,您不需要 didSelectRowAtIndexPath:
。您只需将 segue 链接到 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;
【讨论】:
谢谢蒙迪,完美。我开始认为我做了一些非常顽皮的事情。为什么我不需要使用 didSelectRowAtIndexPath? 如果您愿意,那是传统方法。您可以在 IB 中删除您的 segue 并改用didSelectRowAtIndexPath
。当使用 segues 时,它根本就没有必要——或者你可以用它做不同的事情。
我想发送选中的行数据,怎么发送?
如上所述,第 3 行。以上是关于在 didSelectRowAtIndexPath 之前调用 viewDidLoad的主要内容,如果未能解决你的问题,请参考以下文章
tableView - didSelectRowAtIndexPath 未调用
在 didSelectRowAtIndexPath 中呈现缓慢的 ViewController
我可以麻烦UITableViewDelegate的didSelectRowAtIndexPath:吗?
在 didselectRowAtIndexPath 之后 UITableView 无法滚动底部