为啥 viewDidLoad 在 viewWillAppear 之前被调用? [复制]
Posted
技术标签:
【中文标题】为啥 viewDidLoad 在 viewWillAppear 之前被调用? [复制]【英文标题】:why viewDidLoad gets called before viewWillAppear? [duplicate]为什么 viewDidLoad 在 viewWillAppear 之前被调用? [复制] 【发布时间】:2015-11-17 07:12:00 【问题描述】:我想在视图出现之前执行代码,但 viewDidLoad
在 viewWillAppear
之前被调用。为什么会这样??
【问题讨论】:
【参考方案1】:ViewDidLoad 在视图加载到内存时被调用。即,如果您使用的是故事板,则应用程序已取消归档视图并将其加载到内存中(尚未在屏幕上显示)。
当应用准备好在屏幕上加载视图时,它将调用 viewWillAppear 方法。
在您的情况下,如果您想在视图出现在屏幕上之前执行代码,您可以在 viewDidLoad 或 viewWillAppear 中添加它。
【讨论】:
【参考方案2】:因为视图需要加载到内存中才能显示。 您需要进一步了解视图生命周期。检查this link。
只有在视图及其元素加载到内存后,视图才会绘制到屏幕上,并分别调用 viewWillAppear 和 viewDidAppear。
如果您需要在视图出现之前执行代码,您需要使用viewWillAppear
方法。
【讨论】:
【参考方案3】:我只是想提供更多信息,也许会对您有所帮助。 如果您使用约束,您可以查看:
- viewDidLayoutSubviews()
调用以通知视图控制器其视图刚刚布局 它的子视图。
所以它会在你应用了约束之后被调用。
【讨论】:
以上是关于为啥 viewDidLoad 在 viewWillAppear 之前被调用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥“numberOrRowsInSection”在“viewDidLoad”中途被调用?
为啥在 ViewDidLoad 中没有设置 GLKView 的 DrawableWidth?
为啥 viewDidLoad 中的 self.navigationController 为空?