如何在iOS中使用导航栏隐藏/显示视图的标签栏?

我有导航栏和标签栏的意见。 我想要发生的是隐藏在某个视图上的标签栏,并在用户更改视图时再次显示标签栏。

我看到了隐藏标签栏的代码片段:

-(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; } 

来自: http : //nickwaynik.com/iphone/hide-tabbar-in-an-ios-app/

我把这个视图放在隐藏标签栏的地方

 [self makeTabBarHidden:YES]; 

它可以正常工作,当我显示/隐藏在该视图上,但是当我导航回到以前的视图时,标签栏也是隐藏的。 我试图在视图的viewDidUnload,viewWillDisappear,viewDidDisappear函数调用该函数,但没有任何反应。 在上一个视图的viewDidLoad,viewWillAppear,viewDidAppear函数中调用该函数时也是如此。

你可以设置UIViewController.hidesBottomBarWhenPushed代替:

 DetailViewController *detailViewController = [[DetailViewController alloc] init]; detailViewController.hidesBottomBarWhenPushed = YES; [[self navigationController] pushViewController:detailViewController animated:YES]; [detailViewController release]; 

您也可以在界面生成器中为故事板执行此操作。 select要隐藏标签栏的视图控制器,然后select“隐藏底部栏”。

在这里输入图像说明

我刚刚在UITabBarController上创build了一个类别,允许您隐藏TabBar,可select使用animation:

https://github.com/idevsoftware/Cocoa-Touch-Additions/tree/master/UITabBarController_setHidden

它添加了tabBarHidden属性(以isTabBarHidden作为其getter)和- (void)setTabBarHidden:(BOOL)hidden animated:(BOOL)animated方法。

 self.navigationController.hidesBottomBarWhenPushed=YES; 

添加这行到你的viewdidloadviewWillAppear这将隐藏你从底部的选项卡。

Swift 3:设置tabbar隐藏viewwillAppear或viewdidappear

 self.tabBarController?.tabBar.isHidden = true 

当您单击Xib或故事板文件上的视图控制器时,属性检查器上可以使用相同的属性。

试试这个隐藏/显示;

 -(void)viewWillDisappear:(BOOL)animated{ self.hidesBottomBarWhenPushed = NO; } -(void)viewWillAppear:(BOOL)animated{ self.hidesBottomBarWhenPushed = YES; }