问题
I am new to iOS development and I have started with IOS 5 directly. I have created a storyboard which consists of a tabview controller as its rootviewcontroller. I have put 2 tabs to it.
I want to deselect/unselect all the tabs initially. How do I do this? I have tried the following
UIView *view = [[UIView alloc]initWithNibName:@"view" bundle:[NSBundle mainBundle]];
[self.tabBarController setSelectedViewController:nil];
[self.tabBarController setSelectedViewController:view];
where I have added a view with identifier "view".
But this didn't work, it gives error:
unrecognized selector sent to instance
I also tried the following
[self.tabBarController.tabBar setSelectedItem:nil];
but it says
'NSInternalInconsistencyException', reason: 'Directly modifying a tab bar managed by a tab bar controller is not allowed.'
I have tried this code in controller for the first tab. I want to do this because I want to put a default view on top of first tab view and hide it once the use is clicked on any of the tabs below.
回答1:
I use this to clear any selected tabBarItems
[myTabBar setSelectedItem:nil];
回答2:
Old question. Just for the record, you can't deselect all the Tabs if the Tab Bar is managed by a TabBarController. The method:
[self.tabBar setSelectedItem:nil];
Works only if the Tab Bar is not managed from a Tab Bar Controller. If it is, there's no way to deselect all the tabs, there must be one selected at all time.
回答3:
This is a little hoakey. But I simply set the tint color in -viewWillAppear to gray when I wanted it to look like there was no selection and then set the tint color back to the "selected" color when I want to show the selection.
// 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;
回答4:
I've found a solution that is probably not the best way to go about it but it worked for me ([self.tabBar setSelectedItem:nil]; didn't). I put my tab view in a parent view (myTabBarViewContainer) and then when I want to deselect my items I call removeFromSuperview on the parent view and re-init it :
[self.myTabBarViewContainer.view removeFromSuperview];
Then re-init it and Voila!
Not very pretty but it works...
回答5:
You Should need to use UITabBar. Not UITabBarController
deselect or unselect tabbar item swift 3.0
tabbar_Main.selectedItem = nil
来源:https://stackoverflow.com/questions/9887607/deselect-or-unselect-all-tabs-in-tabbar-in-ios-5