views:

1797

answers:

4

I have the following setup:

A tab bar app. On one tab there is a navigation controller.

My workflow:

When I push a new viewController onto the navigation controller stack, I set the hidesBottomBarWhenPushed property.

This works great, the tab bar is "pushed" as the new view controller slides in place.

The problem:

When I pop this view controller and the root view controller is once again displayed, however, the tab bar is gone.

The navigation controller has grown to fill the space left by tab bar.

Is there a property I need to set to make the tab bar visible again?


What I have tried:

popping to the root view manually

setting (resetting) the hidesBottomBarWhenPushed for the root view

resizing the root view

resizing the view property of the navigation controller (just leaves a "white space" where the tab bat should be)

What "sorta" worked:

If I set the selected index of the tab bar controller to any other index, the tab bar appears. So I know it is still "around", but this does little to help me.

A: 

I do something similar in my app - just calling:

[self.navigationController popToRootViewControllerAnimated:YES];

seems to do the trick and the tab bar is back - admittedly this is in response to a button press rather than the nav bar pop button. I seem to remember it worked fine when using the nav bar back button as well.

Perhaps check you are only setting a single view controller to have the hidesBottomBarWhenPushed property set to YES.

Grouchal
Unfortunately this does not work. It doesn't matter how I pop to the rootView, the Tab bar is still missing. I have set the hidesBottomBarWhenPushed properly for each view controller.
Corey Floyd
Why have you set it for each viewController? this is why you won't see it when you pop! You need to only set it for the viewController that you want to hide the tab bar!
Grouchal
I meant that I have explicitly set it to YES or NO depending upon the viewController/situation. Not that I have set them all to NO or YES arbitrarily.
Corey Floyd
A: 

Same problem, though it is intermittent. one 3G iPhone does not have this problem, another does. the simulator does (and doesn't) have this problem too.

Not sure what to make of it.

I'm seeing this bug on OS 3.0, but not on OS 3.1 if that helps anyone.

Raymond W
fixed in OS 3.1
Corey Floyd
A: 

this is the same problem i had, but i got a solution, try this I found that hiding and then showing the tabbar immediately after the push, solves our problem

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
 NSDictionary *theItem = [items objectAtIndex:indexPath.row];
 DetailController *nextController = [[DetailController alloc] initWithItem:theItem];
 self.hidesBottomBarWhenPushed = YES;
 [self.navigationController pushViewController:nextController animated:YES];
 //
 //[nextController setHidesBottomBarWhenPushed:YES];
 self.hidesBottomBarWhenPushed=NO;

 [nextController release];

}

eddy
+2  A: 

I had this problem too. I was setting -hidesBottomBarWhenPushed on the wrong view controller.

Wrong (but seems to work until you pop):

self.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:self.anotherViewController animated:animated];

Right:

self.anotherViewController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:self.anotherViewController animated:animated];
Dave Batton