我是iOS开发的新手,我直接从iOS 5开始。我创建了一个故事板,它由一个选项卡视图控制器作为其根视图控制器组成。我给它贴了两个标签。
我想先取消选择/取消选择所有选项卡。我该怎么做?我试过以下
UIView *view = [[UIView alloc]initWithNibName:@"view" bundle:[NSBundle mainBundle]];
[self.tabBarController setSelectedViewController:nil];
[self.tabBarController setSelectedViewController:view];
其中我添加了一个标识符为"view"的视图。
但这并没有起作用,它给出了错误:
unrecognized selector sent to instance
我还尝试了以下
[self.tabBarController.tabBar setSelectedItem:nil];
但上面写着
"NSInternalConferenceException",原因:"不允许直接修改由选项卡控制器管理的选项卡。"
我已经在第一个选项卡的控制器中尝试了这段代码。我之所以这么做,是因为我想在第一个标签视图的顶部放一个默认视图,并在单击下面任何一个标签后隐藏它。
我使用它来清除任何选定的tabBarItems
[myTabBar setSelectedItem:nil];
老问题。仅作为记录,如果选项卡栏由TabBarController管理,则不能取消选择所有选项卡。方法:
[self.tabBar setSelectedItem:nil];
仅在选项卡栏不是通过选项卡栏控制器管理的情况下有效。如果是,则无法取消选择所有选项卡,必须始终选择一个选项卡。
这有点古怪。但我只是简单地将-viewWillAppear中的色调设置为灰色,当我希望它看起来像没有选择时,然后将色调设置回"选定"的颜色,当我想显示选择时。
// since we cant turn off tabbar selection, change the color to make
// it look like nothing was selected.
self.tabBarController.tabBar.tintColor = [UIColor grayColor];
-----------
// make sure tintcolor is turned on (just in case another module turned it off
self.tabBarController.tabBar.tintColor = self.view.tintColor;
我找到了一个可能不是最好的解决方案,但它对我有效([self.tabBar setSelectedItem:nil];没有)。我把我的选项卡视图放在父视图(myTabBarViewContainer)中,然后当我想取消选择我的项目时,我在父视图上调用removeFromSuperview并重新初始化它:
[self.myTabBarViewContainer.view removeFromSuperview];
然后重新初始化,Voila!
不是很漂亮,但很管用。。。
您应该需要使用UITabBar。非UITabBarController
取消选择或取消选择选项卡项swift 3.0
tabbar_Main.selectedItem = nil