2014-03-29 42 views
0

後,我與其中包含6個標籤一UITabBarController的應用程序。我也有一個IBAction其具有以下代碼的iOS:導航到一個特定的標籤編輯標籤位置

self.tabBarController.selectedIndex = 2; 

導航到另一個標籤(Profile Tab)。除了當我轉到More標籤並改變我的標籤頁的位置時,它就完美了。然後,IBAction沒有送我去Profile Tab但到了第二個選項卡,它可以是任何其他選項卡。

如何我瀏覽使用我IBAction去特定的標籤,而不是使用選項卡訂單?

回答

1

你需要保持由標籤控制器和他們是什麼管理的視圖控制器的目的的映射。如果每個選項卡都有一個不同類的視圖控制器,那麼您可以使用它並搜索它(但這並不理想......)。

更好的選擇是保持一個字典,其中鍵是標籤/視圖標識符(其應當定義的常數),值是(由選項卡控制器和管理的)與這些標識符相關聯的視圖控制器。

現在,當你想切換您不使用self.tabBarController.selectedIndex = 2;選項卡,你用

UIViewController *controller = self.config[XXXX]; 
self.tabBarController.selectedViewController = controller; 

(其中XXXX是常數標識符和config是映射字典)

0

的UITabBarController有selectedViewController可以在這種特殊情況下進行救援。如果我沒有弄錯,你有UINavigationController,它包含其他視圖控制器,作爲UITabbarController的子項。如果是這樣,您可以將UITabbarController的selectedViewController屬性分配給特定的UINavigationController,前提是您具有適當的ivars或屬性以引用這些UINavigationController。通過這樣做,您不受任何標籤索引的約束。

UINavigationController *moreNavigationController = [UINavigationController alloc] …]; 
self.tabBarController.selectedViewController = moreNavigationController;