xcode4 - iOS7/XCode5 - 立即调用 "viewDidLoad",而不是在调用 "presentViewController"时调用

标签 xcode4 ios7 viewdidload xcode5

我刚刚升级到 XCode5 和 iOS7,现在我的应用程序已停止工作。

我正在基于当前 View 的属性创建一个新 View ,并且在显示新 View 之前我需要设置它的一些属性。

以前,我是这样做的:-

hqView *v = [[hqView alloc] initWithNibName:NULL bundle:NULL];
[v setProperty1:true];
[v setProperty2:false];

[self presentViewController:v animated:TRUE completion:NULL];

这随后触发了 View Controller 上的 [viewDidLoad] 方法,其中包含以下代码:-

if ([self property1])
{
 [list1 load]
}
else
{
 [list2 load]
}

但是现在,一旦我创建 View ,[viewDidLoad]方法就会触发,这意味着我无法在调用[viewDidLoad]之前设置属性,因此无论我实际想要什么,它总是加载list2。

问题是 - 这在 iOS6 下没有发生,所以我想知道是否是 XCode5 中的新设置导致了这种情况的改变,或者我是否必须重写它来完成我需要它做的事情做什么?

最佳答案

您无法知道何时调用 viewDidLoadviewWillAppear 等。

我的建议:为您的 Controller 创建一个专用的 init 方法,例如:

@implementation hqView

- (instancetype)initWithProperty1:(BOOL)prop1 property2:(BOOL)prop2
{
   // uses default NIB
   self = [super initWithNibName:nil bundle:nil];
   if (self){
      [self setProperty1:prop1];
      [self setProperty2:prop2];  

   }
   return self;
}


@end

关于xcode4 - iOS7/XCode5 - 立即调用 "viewDidLoad",而不是在调用 "presentViewController"时调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18955249/

相关文章:

ios - 在 viewDidLoad 中运行 MPMoviePlayerController 的奇怪行为

swift - 简单地等待来自异步线程的值

xcode4 - xcodebuild -list 找不到存在的方案

iphone - 如何将数据从详细 View Controller 传回 uitableview?

iphone - 在 xcode 中通过 gdb 检查属性值

ios - iOS 7 的 UIToolbar 中 UIBarButtonItems 的垂直位置不正确

objective-c - 向导航栏添加两个右栏按钮项

ios - UISearchBar:根据iOS版本不同的风格

HTML5 contenteditable 属性在 iOS7 Mobile Safari 上无法正常工作

IOS/自动布局 : When in lifecycle to set constraints for elements created in code