如何以编程方式更改选定的选项卡?

时间:2014-02-28 08:37:59

标签: ios iphone

我想在滑动时以编程方式更改标签。它成功实现,但我想更改选项卡选择。我使用了以下代码:

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]];

但是这给出了例外:

  

***因未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因是:'不允许直接修改由标签栏控制器管理的标签栏。'

3 个答案:

答案 0 :(得分:1)

尝试使用:[self setSelectedIndex:index];

自身UITabBarControllerindex是视图控制器的索引(来自viewControllers数组),您希望被选中。

请参阅文档here

答案 1 :(得分:0)

试试这个,

如果要选择索引1处的标签

[appDelegate.tabBarController setSelectedIndex:1];

答案 2 :(得分:0)

不要修改由标签栏控制器(UITabBarController类的实例)管理的标签栏。如果这样做,系统会引发异常。仅通过选项卡栏控制器API修改托管选项卡栏或其项目。 如果标签栏不由标签栏控制器管理,则可以使用此类的方法直接修改标签栏。

apple doc

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

[yourTabBar setSelectedIndex:0];