我正试图在我的应用程序中根本不选择任何标签。首先选择第一个选项卡,但我想取消选择它,这样就不会选择任何选项卡了。
不要问我为什么,这就是客户想要的方式!和合
感谢您的帮助!
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];
有什么想法吗?再次感谢!
答案 0 :(得分:7)
如果您使用的是没有UITabBarController的UITabBar实例,则可以取消选择所有标签栏项目。
在这种情况下,下面的代码效果很好。
[tabBar setSelectedItem:nil];
如果UITabBar是UITabBarController的一部分,则应用程序将崩溃并出现异常:
'直接修改托管栏 由标签栏控制器不是 允许'。
换句话说,如果您想要实现这一点,您需要在没有控制器的情况下手动管理tabbar的例程。
答案 1 :(得分:2)
我刚刚遇到了这个问题,实际上非常简单:
tabBarController.selectedViewController = viewController;
这有点类似于HG的回答,但是将所选视图控制器设置为nil是不必要的。
答案 2 :(得分:1)
我终于设法使用以下代码执行此操作:
DefaultView *defaultView = [[DefaultView alloc]initWithNibName:@"DefaultView" bundle:[NSBundle mainBundle]];
[self.tabBarController setSelectedViewController:nil];
[self.tabBarController setSelectedViewController:defaultView];
请注意,仅执行[self.tabBarController setSelectedViewController:nil];
将无法执行任何操作。您必须指定视图控制器。将显示此视图控制器,未选择tabBar图标。选择其他TabBar选项后,defaultView将消失,并将加载所需的视图。
答案 3 :(得分:1)
最好随时更改所选图像&根据您的要求隐藏或显示视图。这是我的一段代码,可以帮助理解:
-(void)viewWillAppear:(BOOL)animated{
if ([[NSUserDefaults standardUserDefaults]integerForKey:@"flagAsk"]) {
UITabBarItem *firstTab = [self.tabBarController.tabBar.items objectAtIndex:0];
firstTab.selectedImage = [[UIImage imageNamed:@"Ask2"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
vieToHide.hidden=YES;
}
else{
UITabBarItem *firstTab = [self.tabBarController.tabBar.items objectAtIndex:0];
firstTab.selectedImage = [[UIImage imageNamed:@"Ask"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
vieToHide.hidden=NO;
}
}
答案 4 :(得分:0)
此视图控制器是其标签栏界面当前显示其自定义视图的控制器。指定的视图控制器必须位于viewControllers数组中。将新视图控制器分配给此属性会更改当前显示的视图,还会在选项卡栏中选择适当的选项卡。更改视图控制器还会相应地更新selectedIndex属性。此属性的默认值为nil。
所以,我认为你需要[rootController setSelectedViewController: nil];
。
<强>更新强>
澄清一下,
[self.tabBarController setSelectedViewController:nil];
还有preventing the selection of tabs的文档可能会有所帮助。
答案 5 :(得分:0)
有更好的方法吗?
use [self.tabBarController setSelectedViewController:nil],
Warning : "-[UITabBarController setSelectedViewController:] only a view controller in the tab bar controller's list of view controllers can be selected."
答案 6 :(得分:0)
我认为rootController.tabBar.selectedItem = 0;
selectedItem=0
时,请确保它将采用tabBarController
的第一个tabBarItem。