5

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

但是,我希望第一页(我想我会称之为着陆页)没有顶栏。我按照此处有关如何在情节提要模式下禁用顶部导航栏的说明进行操作。但是,这会禁用链接到该主视图的所有视图的所有导航栏。

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

有人可以请教吗?我是 Objective c 的新手(主要是 Java 经验),并希望快速推出一个应用程序。我的问题是时间,Storyboard 似乎已经解决了这个问题,因为我可以很快地完成一些事情。

4

4 回答 4

21

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

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)

于 2013-09-14T04:14:20.143 回答
3

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

self.navigationController?.navigationBar.isHidden = true

self.navigationController?.navigationBar.isHidden = false

显示或隐藏导航栏。确保您允许加载视图,因此请在viewWillAppearor中调用它们viewDidAppear

于 2017-09-29T15:21:13.227 回答
0

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

斯威夫特 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 中将其动画化。

要记住的一件事,因为它会动画到视图中,所以您应该确保您的约束未与包含导航栏的保存区域对齐,而是与超级视图对齐。

希望这会有所帮助。

于 2018-02-22T16:24:10.513 回答
0

下面的答案是正确的,并且与 Swift 4 相关。另一个帖子使用 viewWillDisappear 再次显示导航栏而不是 viewDidDisappear,但这不起作用。对于 swift 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)
}
于 2018-08-01T16:50:52.603 回答