2011-04-24 147 views
0

我对可可有些生疏,并且有一个简单的问题。当我在XCode 4中创建一个“基于视图的应用程序”时,我得到一个主窗口xib,一个应用程序委托,以及一个UIViewController子类和xib。主窗口xib包含作为对象的UIViewController子类。但是在代码或检查器中的任何地方,我都没有看到在这个UIViewController上调用“init”。这个视图控制器是如何初始化的?我猜想嵌入式对象的“init()”只是魔法般地被调用?iPhone“基于视图的应用程序”模板:视图控制器xib如何加载?

回答

1

请看看when exactly do Interface Builder items get instantiated?,我已经p提供了一个描述笔尖加载过程的答案。

+0

哦,UIViewController awakeFromNib加载视图控制器的笔尖? – evilfred 2011-04-24 19:51:55

+0

viewController位于MainWindow.nib中,实际上由plist中的条目加载。 – 2011-04-24 20:04:44

+0

雅我知道viewController对象来自哪里。它如何加载它的viewController XIB? – evilfred 2011-04-24 20:06:16

1

self.window.rootViewController = self.viewController;

它们连接低谷的MainWindow.xib文件

,如果你想定制的东西时,一个视图控制器从厦门国际银行/笔尖加载,你需要重写方法- (id)initWithCoder:(NSCoder *)inCoder在视图 - 控制

例如:

- (id)initWithCoder:(NSCoder *)theCoder { 

    self = [super initWithCoder:theCoder]; 

    if(self) { 

     // your fancy stuff here! 
    } 

    return self; 
} 
+0

我在问它如何加载,而不是如何连接 – evilfred 2011-04-24 19:49:26

+0

看到我的答案中的第一行? viewcontroller被定义为'window'的'rootViewController'。当你调用'[self.window makeKeyAndVisible];''rootViewController'(self.viewController)将被加载。 – cweinberger 2011-04-24 19:54:03

+0

“将被加载”是什么意思? – evilfred 2011-04-24 19:55:36

相关问题