取消选择或取消选择iOS 5中选项卡中的所有选项卡



我是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

最新更新