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

查看:547
本文介绍了如何在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];

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

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天全站免登陆