无法隐藏xcode中的导航栏

时间:2013-08-27 16:47:15

标签: xcode navigation

我使用xcode 4.6.3中的Storyboard编辑器创建了一个简单的应用程序。第一个视图是导航控制器,带有一些简单的导航按钮。然后,默认情况下,将导航栏添加到我将按钮连接到每个页面时创建的每个新视图的顶部。

但是,我希望第一页(登陆页面,我想我会称之为)没有顶栏。我按照说明here了解如何在Storyboard模式下禁用顶部导航栏。但是,这会禁用链接到此主视图的所有视图的所有导航栏。

我也改变了子页面顶部导航栏的颜色,但这也不起作用。我在模拟器上运行应用程序,但这些更改似乎没有生效。

任何人都可以提出建议吗?我是目标c的新手(主要是Java经验),并希望快速获得一个应用程序。我的问题是时间和故事板似乎解决了这个问题,因为我可以很快地得到一些东西。

4 个答案:

答案 0 :(得分:19)

我刚刚启动了一个应用程序并遇到了同样的问题,您要查找的行是:

self.navigationController.navigationBar.hidden = YES;

完整代码是:

- (void)viewWillAppear:(BOOL)animated
{
     self.navigationController.navigationBar.hidden = YES;
}

确保使用下一个控制器重新打开它:

self.navigationController.navigationBar.hidden = NO;

仅在更高版本的Xcode中进行测试,但应该适用于4.6.3

(编辑以从viewDidLoad更改为viewWillAppear)

答案 1 :(得分:1)

在Swift中你可以使用几乎显而易见的

self.navigationController?.navigationBar.isHidden = true;

self.navigationController?.navigationBar.isHidden = false;

显示或隐藏导航栏。确保您允许加载视图,以便在viewWillAppear或viewDidAppear中调用它们。

答案 2 :(得分:0)

这可能是一个老帖子,但似乎仍然相关。我遇到了这个问题,并认为这可能对更新到Swift Version 4很有用。

Swift 4

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.setNavigationBarHidden(true, animated: false)
}

override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    navigationController?.setNavigationBarHidden(false, animated: true)
}

例如,您可以将其插入到初始视图控制器中,您不希望看到导航栏。这将允许它隐藏导航栏。并将其设置为下一个segue的视图。

要记住的一件事是,因为它会动画显示你应该确保你的约束没有与保存区域对齐,包括导航栏而是超级视图。

希望这有用。

答案 3 :(得分:0)

下面的答案是正确的,并且与Swift 4有关。另一篇文章使用viewWillDisappear而不是viewDidDisappear再次显示导航栏,但这是行不通的。对于迅速遇到此问题的所有人4 请勿使用

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    self.navigationController?.setNavigationBarHidden(false, animated: true)
}

要再次显示导航栏,请使用

 override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    self.navigationController?.setNavigationBarHidden(false, animated: true)
}