【问题标题】:viewDidLoad being called before didSelectRowAtIndexPath在 didSelectRowAtIndexPath 之前调用 viewDidLoad
【发布时间】:2012-01-26 09:37:05
【问题描述】:

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

我正在使用“单例”来保存我的模型,到目前为止,这一直运行良好。我试图通过didSelectRowAtIndexPath 中的变量设置,将didSelectRowAtIndexPath 中当前表中选择的行传递给目标tableview(它们由情节提要中的segue 链接)。

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

【问题讨论】:

  • 您可以为此发布一些代码吗?
  • 是的,请发布一些代码来进一步解释这一点。在我看来,你的 segue 出了点问题(如果你确实有一个),请提供更多详细信息。

标签: objective-c ios uitableview viewdidload didselectrowatindexpath


【解决方案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 行。
猜你喜欢
  • 2014-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多