仅为根UIViewController隐藏UINavigationBar

tcu*_*rdt 5 iphone cocoa-touch

我正在使用UINavigationController(旁注:在UITabBar中),默认情况下,它在顶部提供了一个UINavigationBar.如果我通过IB隐藏了这个栏,那么这个栏不仅对于根UIViewController而且对于我推入堆栈的所有控制器都消失了.让我没有(自动)方式回弹.

那么如何才能在根UIViewController上隐藏UINavigtionBar.临时打开/关闭"navigationBarHidden"不起作用,因为动画看起来很尴尬.

还有其他想法吗?

Amn*_*sia 9

对我来说,隐藏UInavigationBar后避免空格的最简单方法是隐藏或显示你的UInaviagtionBar如下.

 -(void)viewWillDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}
-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

语法:self.navigationController.navigationBarHidden = YES;我总是有空格.


Dan*_*iel 6

我实际上碰到了这个问题,我是如何解决它的是UINavigationCOntroller委托,我基本上有一个UINavigationController子类并使它成为自己的委托,然后我实现了该方法

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if([viewController isKindOfClass: [SomeClass class]])
        [self setNavigationBarHidden: NO];
    else
        [self setNavigationBarHidden: YES];
}
Run Code Online (Sandbox Code Playgroud)

所以你问它是哪一个类,如果它需要有一个导航栏你显示它,这对我很有用...希望它有帮助