我想在滑动时以编程方式更改标签。它成功实现,但我想更改选项卡选择。我使用了以下代码:
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'而终止应用程序,原因是:'不允许直接修改由标签栏控制器管理的标签栏。'
答案 0 :(得分:1)
尝试使用:[self setSelectedIndex:index];
自身UITabBarController
和index
是视图控制器的索引(来自viewControllers
数组),您希望被选中。
请参阅文档here
答案 1 :(得分:0)
试试这个,
如果要选择索引1处的标签
[appDelegate.tabBarController setSelectedIndex:1];
答案 2 :(得分:0)
不要修改由标签栏控制器(UITabBarController类的实例)管理的标签栏。如果这样做,系统会引发异常。仅通过选项卡栏控制器API修改托管选项卡栏或其项目。 如果标签栏不由标签栏控制器管理,则可以使用此类的方法直接修改标签栏。
引用[yourTabBar setSelectedItem:[yourTabBar.items objectAtIndex:0]];
或
[yourTabBar setSelectedIndex:0];