如何在 iOS 中使用导航栏隐藏/显示视图的标签栏? [英] How to hide/show tab bar of a view with a navigation bar in iOS?

查看:28
本文介绍了如何在 iOS 中使用导航栏隐藏/显示视图的标签栏?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

来自: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];

当我在该视图上显示/隐藏它时它工作正常,但是当我导航回上一个视图时,那里的标签栏也被隐藏了.我尝试在视图的 viewDidUnloadviewWillDisappearviewDidDisappear 函数中调用该函数,但没有任何反应.在前一个视图的viewDidLoadviewWillAppearviewDidAppear函数中调用该函数时也是如此.

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's viewDidLoad, viewWillAppear, viewDidAppear functions.

推荐答案

你可以设置 UIViewController.hidesBottomBarWhenPushed 来代替:

You can set the UIViewController.hidesBottomBarWhenPushed instead:

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

这篇关于如何在 iOS 中使用导航栏隐藏/显示视图的标签栏?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆