2010-08-24 65 views
0

而不是有三個單獨的控制器及其相關的* .xib文件我試圖設置一個通用控制器,然後用三個不同的xib文件之一實例化它RED.xib「」GREEN.xib「&」BLUE.xib「動態加載NIB?

NSString *nibColor; 
switch (selectedRow) { 
    case 0: 
     nibColor = @"RED"; 
     break; 
    case 1: 
     nibColor = @"GREEN"; 
     break; 
    case 2: 
     nibColor = @"BLUE"; 
     break; 
} 

ColorController *colorController = [[ColorController alloc] initWithNibName:nibColor bundle:nil]; 

我的問題是,我不鏈接視圖,並得到下面的錯誤。

loaded the "RED" nib but the view outlet was not set. 

據我所知,通常你鏈接在IB的觀點,但有一種動態挑筆尖在運行時,還是我需要創建單獨的redController,blueController和greenControllers?

歡呼加里

回答

1

從蘋果的UIViewController文檔,這我假設ColorController是的子類:

當你定義的UIViewController的一個新的子類,你必須指定的意見,由控制器進行管理。有兩種互斥方式來指定這些視圖:手動或使用nib文件。如果您手動指定視圖,則必須實施loadView方法並使用它將根視圖對象分配給視圖屬性。如果使用nib文件指定視圖,則不能覆蓋loadView,而應該在Interface Builder中創建一個nib文件,然後使用initWithNibName:bundle:方法初始化視圖控制器對象。使用nib文件創建視圖通常更簡單,因爲您可以使用Interface Builder應用程序以圖形方式創建和配置視圖(而不是通過編程方式)。兩種技術都有相同的最終結果,但是,這是創建適當的視圖集,並通過視圖屬性公開它們。

+0

謝謝你的帖子,它至少告訴我,它應該工作。我所缺少的是我已經分別創建了控制器和* .xib文件。我沒有做的是將每個* .xib的文件所有者設置爲ColorController,並將其視圖插口連接到Interface Builder中的視圖。 – fuzzygoat 2010-08-24 17:18:19

+0

對不起。再讀一遍,這比我想要的更無助。只要說我的觀點是你需要以某種方式建立視圖,不管是手動還是通過筆尖。 – 2010-08-24 19:53:32