2011-04-24 172 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

相關問題