How to hide/show tab bar of a view with a navigation bar in iOS?
Solution 1
You can set the UIViewController.hidesBottomBarWhenPushed instead:
DetailViewController *detailViewController = [[DetailViewController alloc] init];
detailViewController.hidesBottomBarWhenPushed = YES;
[[self navigationController] pushViewController:detailViewController animated:YES];
[detailViewController release];
Solution 2
You can also do this in the Interface Builder for a storyboard. Select the View Controller that you want to hide the Tab Bar for and then select "Hide Bottom Bar on Push".
Solution 3
I just created a category on UITabBarController that allows you to hide the TabBar, optionally with an animation:
https://github.com/idevsoftware/Cocoa-Touch-Additions/tree/master/UITabBarController_setHidden
It adds the tabBarHidden
property (with isTabBarHidden
as its getter) and the - (void)setTabBarHidden:(BOOL)hidden animated:(BOOL)animated
method.
Solution 4
self.navigationController.hidesBottomBarWhenPushed=YES;
Add this line to your viewDidLoad
or viewWillAppear
; this will hide you tab from bottom.
Solution 5
Try this for hide / show:
- (void)viewWillDisappear:(BOOL)animated {
self.hidesBottomBarWhenPushed = NO;
}
- (void)viewWillAppear:(BOOL)animated {
self.hidesBottomBarWhenPushed = YES;
}
dork
Updated on January 29, 2020Comments
-
dork about 4 years
I have views with a navigation bar and a tab bar. What I would like to happen is to hide the tab bar on a certain view and show the tab bar again when the user changes views.
I saw a snippet of code for hiding the tab bar:
-(void)makeTabBarHidden:(BOOL)hide { // Custom code to hide TabBar if ( [tabBarController.view.subviews count] < 2 ) { return; } UIView *contentView; if ( [[tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] ) { contentView = [tabBarController.view.subviews objectAtIndex:1]; } else { contentView = [tabBarController.view.subviews objectAtIndex:0]; } if (hide) { contentView.frame = tabBarController.view.bounds; } else { contentView.frame = CGRectMake(tabBarController.view.bounds.origin.x, tabBarController.view.bounds.origin.y, tabBarController.view.bounds.size.width, tabBarController.view.bounds.size.height - tabBarController.tabBar.frame.size.height); } tabBarController.tabBar.hidden = hide; }
from: http://nickwaynik.com/iphone/hide-tabbar-in-an-ios-app/
I call this on the view wherein I want the tab bar hidden
[self makeTabBarHidden:YES];
it works fine when i show/hide it on that view but when I navigate back to the previous view, the tab bar there is also hidden. I tried calling that function in the view's
viewDidUnload
,viewWillDisappear
,viewDidDisappear
functions but nothing happens. The same is true when the function is called in the previous view'sviewDidLoad
,viewWillAppear
,viewDidAppear
functions.