2012-12-19 54 views
1

我有一個TabBar與5 ViewControllers。我使用tabBarController的數組來填充SideBarMenu,就像在Facebook應用程序中一樣。viewController從[tabBarController viewControllers]數組中刪除時,用於UINavigationController

當我使用viewController設置爲UINavigationController的RootViewController,那麼這個viewController會從數組[self.tabBarController viewControllers]中移除。

爲什麼會發生這種情況,我該如何防止這種情況?

return [[UINavigationController alloc] initWithRootViewController: 
[[self.tabBarController viewControllers] objectAtIndex:0]]; 

所述的viewController在objectIndex 0被除去[self.tabbarcontroller viewControllers]時僅返回4 viewControllers。

回答

1

UIViewController只能有一個父級。將標籤欄中的視圖控制器添加到導航控制器時,導航控制器會將視圖控制器從其以前的父控件中分離出來並將其附加到自身。有關爲何發生這種情況的更多信息,請閱讀UIViewController文檔的實現容器視圖控制器部分。

+0

啊好的,這很有趣。你能推薦我一種方式如何使用我所有的viewControllers全局作爲數組?我將我的應用程序從tabbar應用程序轉換爲sidemenu應用程序 – brush51

+0

您可以使用其他視圖控制器將用戶的導航代理到全局視圖控制器。例如,考慮按側菜單中的項目可能會指示標籤欄切換到相應的視圖控制器。當標籤欄切換時,它會突出顯示當前項目。當然,你可以通過另一種方式做到這一點 - 讓側邊菜單成爲視圖的實際容器,並且標籤欄按鈕會告訴側邊菜單做什麼。 –

相關問題