在UITabBar中不选择任何选项卡

Tom*_* B. 6 iphone cocoa-touch uitabbarcontroller uikit

我试图在我的应用程序中根本不选择任何标签.首先选择第一个选项卡,但我想取消选择它,因此根本不会选择任何选项卡.

不要问我为什么,这就是客户想要的方式!呵呵

谢谢你的帮助!

PS:我已经尝试过了:

// rootController = UITabBarController    
rootController.tabBar.selectedItem = 0;
rootController.tabBar.selectedItem = nil;
[rootController setSelectedIndex:[rootController.items objectAtIndex:0]];
[rootController setSelectedIndex:nil];
[rootController setSelectedIndex:0];
// That one works : (but I can't select 0 or -1 for instance)
[rootController setSelectedIndex:2];
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?再次感谢!

Rom*_*anN 7

如果您使用的是UITabBar实例而没有UITabBarController,则可以取消选择所有选项卡栏项.

在这种情况下,下面的代码效果很好

[tabBar setSelectedItem:nil];
Run Code Online (Sandbox Code Playgroud)

如果UITabBar是UITabBarController的一部分,则应用程序将崩溃并出现异常:

"不允许直接修改由标签栏控制器管理的标签栏."

换句话说,如果您想要实现这一点,您需要在没有控制器的情况下手动管理tabbar的例程.


Jam*_*ers 0

文档中:

该视图控制器是当前由选项卡栏界面显示的自定义视图的控制器。指定的视图控制器必须位于 viewControllers 数组中。向此属性分配新的视图控制器会更改当前显示的视图,并在选项卡栏中选择适当的选项卡。更改视图控制器也会相应地更新 selectedIndex 属性。该属性的默认值为 nil。

所以,我假设你需要[rootController setSelectedViewController: nil];

更新:

为了澄清一点,

[self.tabBarController setSelectedViewController:nil];

还有关于阻止选择选项卡的文档可能会有所帮助。