【发布时间】:2013-09-28 02:42:58
【问题描述】:
我刚刚升级到 XCode5 和 iOS7,现在我的应用程序已经停止工作了。
我正在基于当前视图的属性创建一个新视图,我需要在显示之前设置新视图的一些属性。
以前,我是这样做的:-
hqView *v = [[hqView alloc] initWithNibName:NULL bundle:NULL];
[v setProperty1:true];
[v setProperty2:false];
[self presentViewController:v animated:TRUE completion:NULL];
这随后触发了视图控制器上的 [viewDidLoad] 方法,其中包含以下代码:-
if ([self property1])
{
[list1 load]
}
else
{
[list2 load]
}
但是现在 [viewDidLoad] 方法在我创建视图后立即触发,这意味着我无法在调用 [viewDidLoad] 之前设置属性,因此无论我实际想要什么,它总是加载 list2。
问题是 - 这在 iOS6 下没有发生,所以我想知道是否是 XCode5 中的一个新设置导致了这种变化,或者我是否必须重写它来做我需要的事情做什么?
【问题讨论】:
-
你可以在 viewWillAppear 中移动代码
-
我考虑过这一点,但有时我会从这个视图转到另一个视图,然后再回到这个会触发两次的视图。这似乎过度和烦人。
-
我尝试删除 [self presentViewController] 代码,它仍然在任何属性分配之前触发 [viewDidLoad]。
-
你总是可以添加一个 didInitialize BOOL ivar 来只运行一次代码
标签: xcode4 ios7 viewdidload xcode5