【问题标题】:What is the logical order of load methods of UITableViewController?UITableViewController 的加载方法的逻辑顺序是什么?
【发布时间】:2015-03-20 20:42:13
【问题描述】:

当执行 segue 以显示 tableView 时,UITableViewController 方法的逻辑执行顺序是什么?这是我的最佳猜测:

  1. viewWillLayoutSubviews
  2. numberOfSectionsInTableView
  3. numberOfRowsInSection
  4. cellForRowAtIndexPath
  5. heightForRowAtIndexPath
  6. viewDidLoad
  7. viewWillAppear
  8. viewDidAppear

请更正此顺序并添加到其中。

【问题讨论】:

  • 在 WWDC 上,工程师们提到了我们永远不应该围绕首先调用哪些方法的假设来构建我们的应用程序。这是不好的做法,绝对不是面向未来的架构决策。我强烈反对它
  • 好吧,确实有道理。
  • 依次下断点并记下调用方法

标签: ios objective-c uitableview swift uiviewcontroller


【解决方案1】:

这可能会对你有所帮助。

  1. viewDidLoad 因为它首先加载视图。

  2. viewWillAppear 当任何视图再次出现时,就会调用此方法。

  3. numberOfSectionsInTableView 设置表格中的部分数。

  4. numberOfRowsInSection 设置节后,此方法确定节中的行数。

  5. heightForRowAtIndexPath 将设置行的高度。

  6. viewWillLayoutSubviews 已创建节标题视图。

  7. cellForRowAtIndexPath 表格视图单元格的内容和布局就是在这个方法中创建的。

  8. viewDidAppear

【讨论】:

  • 两个建议的答案不匹配:\你们中的任何人都可以提供一个链接以供将来参考吗?如果您最终是错误的人,还可以编辑您的答案
  • View 委托方法和 TableView 委托方法,是两个完全不同的东西。我只是在流程继续进行时解释了它们,并参考了 View Delegate Method 的参考资料,developer.apple.com/library/prerelease/ios/documentation/UIKit/…developer.apple.com/library/ios/documentation/UIKit/Reference/… 可能会对您有所帮助。
  • 不管怎样,只要比较 1 2 和 3 就可以看出差异。你们中的一个人一定是弄错了,还是我什么都没看到?
  • 伙伴我提到了有问题的方法,并在我在我的项目或任何示例项目中发现流程时描述了它们。如果我的委托方法流程中有任何错误,请纠正我。
【解决方案2】:

如果您有 1 行和 1 个部分。这是它所经历的模式。

  1. viewDidLoad
  2. numberOfSectionsInTableView
  3. viewWillAppear
  4. numberOfSectionsInTableView
  5. numberOfRowsInSection
  6. heightForRowAtIndexPath
  7. viewWillLayoutSubviews
  8. numberOfSectionsInTableView
  9. numberOfRowsInSection
  10. heightForRowAtIndexPath
  11. viewWillLayoutSubviews
  12. viewDidLayoutSubviews
  13. viewDidAppear

【讨论】:

  • 两个建议的答案不匹配:\你们中的任何人都可以提供一个链接以供将来参考吗?如果您最终是错误的人,还可以编辑您的答案
  • 我制作了一个示例应用程序来确保流程。如果您在 UITableViewController 中返回 1 节和 1 行,这就是流程。
  • cellForRowAtIndexPath 在哪里?什么时候调用?
  • 还有viewForHeaderInSection?
猜你喜欢
  • 2015-06-21
  • 2020-08-15
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
相关资源
最近更新 更多