有人可以向我解释在iOS中使用initWithNibName吗?

时间:2013-03-09 22:21:45

标签: ios objective-c uiviewcontroller

我一直在玩iOS 6中的UIViewControllers。但有一点我不太懂。我们什么时候使用initWithNibName,awakeFromNib和setup这样的方法?它们与viewDidLoad,viewWillAppear?

的区别如何?

1 个答案:

答案 0 :(得分:3)

-initWithNibName:bundle:是基于XIB的UIViewControllers的标准初始值设定项。它与Cocoa-Touch的其余部分(保存一些异常值)直接形成对比,后者在解压缩时发送-initWithCoder:。请注意,此时尚未开始任何设置工作。当然,超级调用跳转启动NSCoder来“解冻”你的XIB,但你没有有效的视图实例,不应该尝试在这个方法中设置一个。

在给定的类被“解冻”并由NSCoder初始化之后立即调用

-awakeFromNib:。此时,您仍然没有有效的视图插座,因此任何与视图相关的设置(添加子视图,在根视图上设置属性等)都应该在-loadView中完成(唯一的方法是您应该分配给self.view)或-viewDidLoad

-viewWill/DidAppear是外观方法(不一定是初始化的指示符),当关联视图设置为root时,或者弹出导航堆栈中它上方的视图时,会发送该方法。