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

dor*_*ork 58 uitabbarcontroller uinavigationcontroller 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;
}
Run Code Online (Sandbox Code Playgroud)

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

我在视图中调用它,我希望隐藏标签栏

[self makeTabBarHidden:YES];
Run Code Online (Sandbox Code Playgroud)

当我在该视图上显示/隐藏它时,它工作正常但当我导航回到上一个视图时,那里的标签栏也是隐藏的.我试着打电话给在视图中的该功能viewDidUnload,viewWillDisappear,viewDidDisappear功能,但没有任何反应.当函数被调用在前面视图的情况也是如此viewDidLoad,viewWillAppear,viewDidAppear等功能.

小智 144

您可以设置UIViewController.hidesBottomBarWhenPushed:

DetailViewController *detailViewController = [[DetailViewController alloc] init];
detailViewController.hidesBottomBarWhenPushed = YES;
[[self navigationController] pushViewController:detailViewController animated:YES];    
[detailViewController release];
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很酷的解决方案,在这种情况下,推送一个新的控制器不是一个选项,应该为进入和退出该栏提供动画:http://stackoverflow.com/questions/5272290/how-to-hide-uitabbarcontroller/11490623# 11490623 (3认同)

Sur*_*gch 35

您也可以在Interface Builder中为故事板执行此操作.选择要隐藏选项卡栏的视图控制器,然后选择"在推送时隐藏底栏".

在此输入图像描述


bol*_*iva 13

我刚刚在UITabBarController上创建了一个类别,允许你隐藏TabBar,可选择带动画:

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

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