我在导航控制器层次结构中有视图控制器,但只想要第一个视图控制器上的导航栏 - 我该怎么做?

时间:2013-04-28 21:48:49

标签: ios objective-c uiviewcontroller uinavigationcontroller uistoryboard

我有一个主视图控制器,它列出了一堆项目,当他们点击其中一个项目时,它会将它们分割到下一个视图。但是,在下一个视图中,我不希望导航栏在那里,我只想在第一个视图中使用它(我使用UIToolBar作为导航栏,有点像{{3} })。

我到底该如何实现这一目标?如果我完全从导航控制器中移除主视图控制器(取消嵌入,有效),我可以有选择地实现导航栏,但是这个解决方案不允许使用segue,所以它没有用。

我的另一个解决方案是在self.navigationController.navigationBarHidden = YES;中为第二个视图调用viewDidAppear,但有了这个,我在故事板中添加的UIToolBar被推到了导航栏下面隐藏了,然后当它被隐藏时,它就消失了,UIToolBar"倒下了#34;这对用户来说是一个相当大的影响。

获得这种效果的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

这样做的最佳方法如下。在你的UINavigationController的第一个(rootViewController)中viewWillAppear:,你设置:

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:animated];
}

然后在你viewWillDisappear,你恰恰相反:

-(void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:animated];
}

这种方式应该可以在用户没有“丑陋”的情况下发挥作用。