何时使用 viewDidLoad 以及何时使用 awakeFromNib

Posted

技术标签:

【中文标题】何时使用 viewDidLoad 以及何时使用 awakeFromNib【英文标题】:When to use viewDidLoad and when to use awakeFromNib 【发布时间】:2012-12-29 04:30:52 【问题描述】:

我已经很习惯使用 viewDidLoad 方法来执行我想要在视图开始时完成的事情,但是阅读 Apple 的教程之一,他们在 awakeFromNib 方法中为类设置了数据控制器,而在 awakeFromNib 中什么也没做.我换了它,它在我的应用程序中的工作似乎相同,但我不确定将它放在 awakeFromNib 或 viewDidLoad 中是否更好。

我什么时候应该使用其中一个?

【问题讨论】:

在 Tab 控制器中要注意这一点 [***.com/a/15786529/547341][1] [1]: ***.com/a/15786529/547341 【参考方案1】:

awakeFromNib 在与类关联的 nib 文件被加载时被调用。任何可以拥有 nib 的班级都可以使用它。 viewDidLoad 仅由视图控制器使用。它通常在从 nib 加载时调用,但也可以由在内存中创建的视图调用(非常罕见的情况。)。如果您使用的是控制器,那么我建议您使用viewDidLoad

更多信息请参考Answer

【讨论】:

【参考方案2】:

viewDidLoad 与视图控制器相关联。如果您需要初始化另一个未从 nib 归档的控件(例如 UITableViewCell 原型),您不能重载 viewDidLoad,您需要重载 awakeFromNib。

【讨论】:

以上是关于何时使用 viewDidLoad 以及何时使用 awakeFromNib的主要内容,如果未能解决你的问题,请参考以下文章

什么时候放入viewWillAppear,什么时候放入viewDidLoad?

何时调用 viewDidLoad?

何时实际调用 viewDidLoad / viewDidAppear? [复制]

视图控制器何时触发其前身 viewDidLoad?

何时在 Rails 视图中使用 @ 以及何时使用符号?

在 Dart 中何时使用 mixins 以及何时使用接口?