是否有BOOL或其他方式知道是否已调用viewDidLoad:?
每次我的视图进入活动状态时,我都需要更改一个视图属性,但是如果视图还没有被加载,我不想过早地触发viewDidLoad:。如果无法轻易告诉viewDidLoad:是否已被调用,我只需在视图控制器init中添加一个名为 loaded 的BOOL设置为NO,然后在输入的活动后更改视图属性if 已加载为YES或在viewWillAppear中:如果已加载为否,则将加载设置为YES。
答案 0 :(得分:51)
使用isViewLoaded
。除此之外,它完全符合您的要求,关于它的说法并不多。文档简单如下:
调用此方法会报告视图是否已加载。不像 view属性,如果不是,则不会尝试加载视图 已经在记忆中了。
答案 1 :(得分:1)
也许您应该在viewDidLoad
中初始化您的UIView,然后以viewWillLayoutSubviews
内的任何方式更改它。
答案 2 :(得分:1)
这是这个问题的迂腐答案。如果您想知道何时触发viewDidLoad
,则必须在视图控制器中实施viewDidLoad
- (void)viewDidLoad
{
[super viewDidLoad];
viewDidLoadCalled = YES; // Not actually the best way to do this...
// Set up more view properties
}
但正如汤米所说,你实际上需要使用isViewLoaded
。这解决了像
if (!self.view) {
// do something
}
由于询问而无意中加载了视图。
请注意,在调用viewWillAppear:
时,视图将始终加载。此外,在较旧的(iOS 6之前的版本)版本中,视图可以在视图控制器的生命周期内卸载并重新加载多次。请参阅非常好的Big Nerd Ranch视图生命周期图,了解旧行为。它在iOS 6+中几乎相同,只是在低内存条件下视图不会卸载并且viewDidUnload
不会被调用: