是否在分配和初始化viewController之后立即调用awakeFromNib?视图控制器的awakeFromNib在什么时候被调用?从我的调试会话中,我看到在执行[self.window makeKeyAndVisible]之前,不会调用rootViewController的awakeFromNib。
发布于 2012-02-03 09:04:57
在分配和初始化视图及其子视图之后,调用awakeFromNib。可以保证视图将设置其所有outlet实例变量。
EDIT:对事件的详细叙述:
在实例化过程中,归档中的每个对象都是未归档的,然后使用适合其类型的方法进行初始化。Cocoa视图(以及可以使用关联的Interface Builder调色板进行自定义的自定义视图)使用其initWithCoder:方法进行初始化。定制视图使用它们的initWithFrame:方法进行初始化。在nib中实例化的自定义类使用它们的init方法进行初始化。
一旦从归档中实例化和初始化了所有对象,nib加载代码就会尝试在每个对象的插座和相应的目标对象之间重新建立连接。如果您的自定义对象有插座,则NSNib对象会尝试重新建立您在界面生成器中创建的任何连接。它首先尝试使用对象自己的方法建立连接。对于每个需要连接的插座,NSNib对象在对象中查找setOutletName:形式的方法。如果该方法存在,NSNib对象将调用该方法,并将目标对象作为参数传递。如果您没有使用确切名称定义setter方法,则NSNib对象将在对象中搜索具有相应插座名称的实例变量(类型为IBOutlet id),并尝试直接设置其值。如果找不到具有正确名称的实例变量,则不会初始化该连接。最后,在所有对象完全初始化之后,每个都会收到一条awakeFromNib消息。
EDIT 2:这不适用于从故事板加载的视图控制器。
发布于 2014-02-12 14:54:31
当编码器想要加载一个它还没有初始化的对象时。
Exp:当代码调用不需要cellforrow的awakeFromNib时,UITableViewCell中的控件将初始化。
https://stackoverflow.com/questions/9122344
复制相似问题