0

我一直在玩 iOS 6 中的 UIViewControllers。但是有一件事我不太明白。我们什么时候使用像 initWithNibName、awakeFromNib 和 setup 这样的方法?它们与 viewDidLoad、viewWillAppear 有何不同?

4

1 回答 1

3

-initWithNibName:bundle:是基于 XIB 的 UIViewControllers 的标准初始化程序。它与 Cocoa-Touch 的其余部分(保存一些异常值)直接形成对比,后者-initWithCoder:在取消归档时发送。请注意,此时尚未开始设置工作。当然,通过超级调用来启动 NSCoder 以“解冻”您的 XIB,但是您没有有效的视图实例,并且不应该尝试在此方法中设置一个。

-awakeFromNib:在给定的类被“解冻”并由 NSCoder 初始化后立即调用。此时,您仍然没有有效的视图出口,因此任何与视图相关的设置(添加子视图,在根视图上设置属性等)都应该在-loadView(您应该分配的唯一方法)中完成到self.view), 或-viewDidLoad.

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

于 2013-03-09T22:34:05.087 回答