2014-02-28 162 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

这是我已经实施,但它会导致崩溃。 –

相关问题