2011-11-22 58 views
0

我試圖讓一個應用程序有兩種不同的標籤欄控制器,一個在狀態的預登錄,以及一個用於後登錄狀態。我目前的策略是創建所有的視圖,將它們添加到兩個數組(每個tabBarController一個),然後用一些邏輯切換作爲子視圖分配的tabBarController。單一視圖添加到兩個獨立的tabBarController

我目前具有帶是兩個tabBarControllers之間的共同看法的問題。如果我只從一個數組中創建一個tabBarController,那麼一切都很好。但是當我嘗試在第一個數組中創建第二個具有相同視圖的數組時,所有常見視圖都不再出現在具有原始數組視圖的tabBarController中。

首先我不知道這是否是連正確對待我的問題。其次,我不確定爲什麼一個數組中的指針在添加指向另一個數組的指針時似乎失去了引用。

這裏是我的代碼:

NSArray *loggedViewControllers = [NSArray arrayWithObjects:squareView, circleView,  starView, diamondView, nil]; 
loggedTabBarController.viewControllers = loggedViewControllers; 

NSArray *notLoggedViewControllers = [NSArray arrayWithObjects:squareView, circleView, diamondView, nil]; 
notLoggedTabBarController.viewControllers = notLoggedViewControllers; 

[release squareView]; 
[release circleView]; 
[release diamondView]; 
[release starView]; 

[self.window addSubview:[loggedTabBarController view]]; 
[self.window makeKeyAndVisible]; 

從我辦這個代碼,我會用空白,升景,空白空白標籤欄。

如果我運行以下命令:

[self.window addSubview:[notLoggedTabBarController view]]; 

一切都顯示正常。

感謝您的幫助。

回答

1

我不這樣做是行得通的。

當添加視圖作爲一個子視圖到另一個視圖,它首先將刪除上海華目前它是在(如果它是在一個)圖。

由於TabBarController管理的TabView是UIView的子類,因此它的行爲方式會相同 - 所以當您將視圖添加到TabBarControllers視圖列表中時,它隨後將該視圖添加爲其TabBarView的子視圖,也將從其他TabBarControllers TabView中刪除該視圖。

你會更好看TabViewController的委託方法我認爲,只是在一個TabViewController管理一個單獨的列表。

1

我要回答的方法是保持一個單一的標籤欄,但改變我以前的項目。我發現改變tabbarItem更容易,然後改變整個標籤欄,特別是因爲一些項目不會改變。

相關問題