views:

335

answers:

2

Hi,

I'm trying to select no tabs at all in my application. At first the first tab is selected, but I'd like to deselect it so no tabs at all would be selected.

Don't ask me why, it's just that way the client wants it! hehe

Thanks for your help!

PS: I already tried:

// 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];

Any ideas? Thanks again!

A: 

From the documentation:

This view controller is the one whose custom view is currently displayed by the tab bar interface. The specified view controller must be in the viewControllers array. Assigning a new view controller to this property changes the currently displayed view and also selects an appropriate tab in the tab bar. Changing the view controller also updates the selectedIndex property accordingly. The default value of this property is nil.

So, I would assume you need to [rootController setSelectedViewController: nil];.

Update:

To clarify a bit,

[self.tabBarController setSelectedViewController:nil];

There is also documentation on preventing the selection of tabs that could be helpful.

jsumners
Like I said in the code bit of my question: It does not work, it crashes for this reason:2010-05-26 12:35:22.091 PremierSoins[8449:207] *** -[UITabBarController selectedViewController:]: unrecognized selector sent to instance 0x4b43fb02010-05-26 12:35:22.093 PremierSoins[8449:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UITabBarController selectedViewController:]: unrecognized selector sent to instance 0x4b43fb0'
Tom
The code in your question at no point mentions `selectedViewController:`. `setSelectedIndex:` is not the same thing.
jsumners
You'd also need to call `-setSelectedViewController:`, not just `-selectedViewController:`...
chpwn
A: 

Hi.

You can deselect all tab bar items if you are using UITabBar instance without UITabBarController one.

In such case below code works well.

[tabBar setSelectedItem:nil];

If UITabBar is a part of UITabBarController then application will crash with exception:

'Directly modifying a tab bar managed by a tab bar controller is not allowed.'

In other words if you would like to get this worked you need to manage tabbar's routines manually without controller.

RomanN