我有一个Storyboard,并且通过以下代码从代码中实例化一个视图控制器:
NSLog(@"1");
MyController *vc = (MyController *)[[UIStoryboard storyBoardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"MyController"];
NSLog(@"4");
MyController类的实现包括以下内容:
- (void)viewDidLoad {
NSLog(@"2");
[super viewDidLoad];
[NSThread sleepForTimeInterval:2];
NSLog(@"3");
}
当我运行我的代码时,我希望看到以下输出结果:
1
2
3
4
但似乎只有在访问MyController
的视图后才会调用-viewDidLoad
:
1
4
如果我将第一个修改为这样:
NSLog(@"1");
MyController *vc = (MyController *)[[UIStoryboard storyBoardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"MyController"];
[vc view]; // Just accessing
NSLog(@"4");
然后输出将会是:
1
4
2
3
如何确保我的属性已初始化(-viewDidLoad
已运行),并且我可以给控制器传递参数?推荐的方法是什么?
var fromAddress : String?
并通过prepareForSegue
传递它,为什么它不能工作?然后在viewWillAppear
中,将textfield.text
设置为fromAddress
。 - Tim