2014-02-28 206 views
0

我想通過刷卡以編程方式更改選項卡。它的實現成功,但我想改變選項卡的選擇。我用下面的代碼:如何以編程方式更改選定的選項卡?

UINavigationController *navController = [[appDelegate.tabBarController viewControllers] objectAtIndex:1]; 
    [appDelegate.tabBarController.delegate tabBarController:appDelegate.tabBarController shouldSelectViewController:[[navController viewControllers] objectAtIndex:0]]; 

    [appDelegate.tabBarController.tabBar setSelectedItem:[[appDelegate.tabBarController.tabBar items] objectAtIndex:1]]; 

但是這給例外:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Directly modifying a tab bar managed by a tab bar controller is not allowed.' 

回答

1

與嘗試:[self setSelectedIndex:index];

自我是UITabBarControllerindex是視圖控制器的索引(從viewControllers陣列)你想被選中。

參見文檔here

0

試試這個,

如果想在指數選擇標籤
[appDelegate.tabBarController setSelectedIndex:1]; 
+0

感謝您的答覆..引用,但這並不爲我工作。 –

+0

@PanktiPatel是否實現了'shouldSelectViewController:''UITabbarController'的代理方法 – Akhilrajtr

+0

是的,我做到了。 –

0

不要修改由標籤欄控制器管理的標籤欄( UITabBarController類的一個實例)。如果這樣做,系統會引發異常。只能通過標籤欄控制器API修改託管標籤欄或其項目。 如果標籤欄不是由標籤欄控制器管理的,則可以使用此類的方法直接修改標籤欄。

通過apple doc

[yourTabBar setSelectedItem:[yourTabBar.items objectAtIndex:0]]; 

[yourTabBar setSelectedIndex:0]; 
+0

這是我已經實施,但它會導致崩潰。 –

相關問題