从nib加载时未调用UIViewController子类init

时间:2009-10-15 07:39:22

标签: objective-c model-view-controller uikit interface-builder nib

我尝试覆盖UIViewController子类的默认initWithNibName指定初始化器,如下所示:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Custom initialization
    }
    return self;
}

我还在头文件中包含了它的定义。但是,当我的Application Delegate nib加载viewcontroller时,不调用初始化程序,只调用-viewDidLoad。

nib magic如何实例化我的视图控制器呢?为什么所有XCode模板都说明

  

//指定的初始化程序。如果以编程方式创建控制器并希望执行不适合viewDidLoad的自定义,则覆盖。

当从另一个nib加载viewcontroller时,我的initWithNibName是否正确?

1 个答案:

答案 0 :(得分:17)

您需要将初始化代码放在awakeFromNib方法中,以便在从Nib加载时运行它。 Nib文件包含它包含的对象的存档版本,因此原则上它们不需要再次初始化。