2009-05-19 95 views
4

我想我找到了原因:IB中的文檔信息窗口有一個警告:「'Selected Navigation Controller(Second)'將nib名稱屬性設置爲'SecondView.nib' ,但是這個視圖控制器不打算以這種方式設置其視圖。「UITabBarController自動從另一個筆尖加載UINavigationController

無賴。


我已經建立了筆尖在Interface Builder中,在頂層和UINavigationController s的交換機具有UITabBarController

它工作正常,當一切都在一個單一的nib文件,但我想單獨nib文件UINavigationController s。

與蘋果的TabBar模板開始,如果我只是改變類SecondView來UINavigationController,這一切休息:

second nib

和我得到的是這樣的:

// imgur has lost the image, sorry // 

是否有可能如果沒有以編程方式設置所有內容,單獨的文件爲UINavigationController

我想TabBarController來處理加載和卸載筆尖。

+0

嘿,這裏有一些個人照片而不是截圖。你能解決嗎? :) – 2012-12-10 01:54:30

回答

5

只需將UINavigationController與FirstViewController交換即可。

所以層次應該是這樣的:

Tab bar controller 
-----Tab bar 
-----Navigation Controller 
----------First View Controller 
---------------Navigation Item 
----------Tab bar item (First) 
-----Navigation Controller 
----------Second View Controller 
---------------Navigation Item 
----------Tab bar item (Second) 

您設置第一個視圖控制器的筆尖在檢查包含實際視圖對象(因爲你正嘗試將它們分割成單獨的文件筆尖文件,這是一件好事)。

您有一個選項卡,該選項卡具有加載第一視圖控制器作爲其根視圖的導航控制器。

完成。

1

我相信你正在尋找這樣的東西。你會用你的第二個nib文件的名字替換「whatever」。

newNavController = [[UINavigationController alloc] initWithNibName:@"whatever" bundle:[NSBundle mainBundle]]; 
+0

我想避免以編程方式加載,初始化和釋放nibs。 UITabBarController會自動執行此操作(對於普通的UIViewControllers至少...) – Kornel 2009-05-19 15:59:35

5

我還沒有嘗試通過IB設置UINavigationController。我有多個屏幕,每個都存儲在單獨的xib中,並有一個擴展UIViewController的相應類。在applicationDidFinishLaunching中,我使用xib初始化UIViewControllers,然後手動創建UINavigationController,將導航控制器的視圖添加到窗口並將第一個視圖推送到導航控制器。

不知道這是否有幫助。

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    navigationController = [[UINavigationController alloc] init]; 

    FirstViewController * viewController = [[FirstViewController alloc] 
              initWithNibName:@"FirstView" 
                bundle:nil]; 
    [navigationController pushViewController:viewController animated:NO]; 
    [viewController release]; 
    [window addSubview:navigationController.view]; 
    [window makeKeyAndVisible]; 
} 

以上FirstViewController延伸的UIViewController,在IB創建視圖,然後文件的所有者類設置爲你的類(例如這裏FirstViewController)和連接文件的所有者視圖UIView的的看法。

1

首先,它看起來像你有你的UITabBarItem s 下的導航控制器而不是直接在UITabBarController下。這可能是你的問題的一部分。第二,當你在IB中添加一個UITabBarController並且點擊你的頂級對象列表中的圖標(你的第一個截圖)時,屬性檢查器將允許你改變每個視圖控制器的類型標籤。如果你願意,使用這個,你可以將它們全部更改爲導航控制器。此外,由於您想從其他筆尖加載自定義視圖和視圖控制器,因此如果您查看屬性檢查器底部的「視圖控制器」部分,則可以從項目中選擇一個筆尖以加載視圖。假設筆尖的「文件所有者」設置爲UINavigationController子類,它應該都可以正常工作。

所有這些都沒有大量的編碼工作。如果您不能找到這些面板,請告訴我您是否需要屏幕截圖。

+0

我無法直接在UITabBarController下移動UITabBarItems - 這會在IB中創建新的控制器。 我已經更正了UITabViews檢查器中的控制器類型,並在IB中觸發警告,說它不會工作:( – Kornel 2009-05-19 16:29:30

0

我發現了同樣的警告。我已經將所有視圖控制器保存在單獨的xib文件中。我通過刪除.nib名稱並將其保留爲空來刪除它。