如何在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;
添加这行到你的viewdidload
或viewWillAppear
这将隐藏你从底部的选项卡。
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; }