創建一個只包含新視圖的NIB文件。將NIB文件中文件所有者的類更改爲LevelView控制器的類。當您想要加載新的NIB文件時,請從LevelView控制器中調用以下代碼:
NSArray *topLevelObjects = [[[NSBundle mainBundle] loadNibNamed:@"Put your nib file name here" owner:self options:nil];
UIView *newLevelView = [[topLevelObjects objectAtIndex:0] retain];
這是幹什麼的?當你調用loadNibNamed時,它會返回NIB文件中頂層對象的數組。 「文件所有者」和「第一響應者」代理對象不計爲頂級對象。所以,你會得到一個只有NIB文件中頂層視圖的數組。您將自己作爲文件所有者傳遞,以便您在頂層視圖的子視圖和界面構建器中的「文件所有者」之間建立的任何插座連接都已連接。
如果您將頂層視圖連接到視圖控制器中的插座,則不需要對返回的數組loadNibNamed執行任何操作。只要忽略它,它就會自動釋放(它會以保留計數0返回給您)。
現在,我認爲這樣做是一個壞主意。我認爲有更好的方法來設計你的應用程序。例如,創建描述級別的數據文件(例如屬性列表或XML文件)比將所有級別放入NIB文件更有意義。但是,如果你真的想這樣做,上面的東西應該讓你開始。
嗯...當我把代碼的上半部分,它仍然加載第二個視圖,即使不必從數組中調用它。 (我把代碼放在「ViewDidLoad」方法內部,也許這是爲什麼?)我喜歡這種將我的NIB引入數組的方法,所以我可以爲每個「Map Segment」調用合適的字符應該是英寸再次,爲什麼新的視圖加載甚至只有一半的代碼寫入?非常感謝您的幫助! :D – user298261 2010-09-28 23:30:44
啊,明白了!將第二個視圖附加爲視圖控制器的「視圖」插座。我還在你寫的第二行下面添加了「self.view = newLevelView」代碼,因爲編譯器抱怨那個變量未被使用。再次感謝你的幫助! :D – user298261 2010-09-28 23:35:45
Hmm ....所以每個視圖都包含在它自己的數組中......每個數組都可以作爲一個Dictionary內的對象存檔...然後爲角色所在的任何級別段調用正確的字典對象?這個邏輯是正確的嗎? – user298261 2010-09-29 00:23:10