2012-10-31 102 views
12

我发现了很多帖子,但仍然没有解决方案。我试图在最初的UIViewController上隐藏NavigationBar,但我仍想在第二个UIViewController上显示它。这是我的故事板:在故事板中为一个ViewController隐藏NavigationBar

enter image description here

当我关掉推断顶酒吧为我的主视图控制器,它在故事板消失,但是当我运行程序的时候,仍然显示。当我对NavController中的NavigationBar执行相同操作时,它会在所有三个中都消失(因为它们都继承了no Nav Bar)。

我想在ScrollViewV View Controller中显示NavBar,但将其隐藏在MainViewController中。

所有的控制器都有相应的.h或.m文件,但我很困惑如何以编程方式执行此操作。让我知道你是否需要看别的东西。非常感谢!

回答

41

在你mainViewController,你可以做到以下几点:

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

你可能想隐藏这个视图控制器时显示导航栏,为做到以下几点:

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

感谢您的替代答案! – Siriss

+0

这是覆盖viewWillAppear的更好的答案。谢谢你,并且在回答之前不要进一步调查。 – Siriss

+0

我很高兴解决了您的问题 – user427969

0
self.navigationController.navigationBarHidden = YES; 
+0

谢谢!所以这意味着,因为其他人是继承的,我将不得不将其设置为可见的其他ViewControllers我有正确的?这真的很简单....再次感谢。 – Siriss

+0

此外,当我在我的ScrollView视图控制器中重新打开NavBar时,它会在主视图控制器中再次显示导航栏......我如何制作永久性视图? – Siriss

+1

viewDid/WillAppear和viewDid/WillDissappear ... – Martol1ni

0

我注意到您还需要将以下内容添加到您希望导航出现的控制器中。

[self.navigationController setNavigationBarHidden:NO animated:animated]; 
[super viewWillAppear:animated]; 
2

如果你想保持对事物的故事板比编辑用户定义的属性和 设置navigationController.navigationBarHidden为布尔检查。

+0

这是一个很棒的建议 – Siriss

+2

这可以工作,但是你将无法在另一个ViewController中使用相同的技巧显示NavigationBar。 (用户定义的运行时属性应用于笔尖加载时,而不是viewWillAppear) – Berik

0

任何人都想知道如何在Swift中做到这一点?

override func viewDidAppear(animated: Bool) { 
    self.navigationController?.navigationBar.hidden = true 
} 
相关问题