如何在Swift中从第一个视图控制器隐藏导航栏?

329
如何在Swift中从第一个ViewController或特定的 ViewController 隐藏导航栏?
我在 viewDidLoad() 中使用了以下代码:
override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.isNavigationBarHidden = true
}

还有在viewWillAppear中:

override func viewWillAppear(animated: Bool) {
    self.navigationController?.isNavigationBarHidden = true
}

这两种方法都会将导航控制器从所有的视图控制器中隐藏。


1
你需要为所有的视图控制器手动管理它,无法仅针对其中任何一个进行操作。 - itsji10dra
14个回答

0
在IOS 8中,就像这样做。
navigationController?.hidesBarsOnTap = true

但仅在其为 UINavigationController 的一部分时才启用。

当您想要返回时,请将其设置为 false。


0
我使用以上的一种变体,将我的应用程序的部分隔离开来,以便嵌入不同的 NavControllers中。这样,我就不必重置可见性。例如,在启动序列中非常有用。

0
在视图的“Will Appear”和“Disappear”方法中调用“set hide”方法。如果您不在视图中调用该方法,则视图将以false状态消失。它将隐藏完整的导航层次结构中的导航栏。
 override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.setNavigationBarHidden(true, animated: true)
}

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

这是一条复制/粘贴响应。你的回答和其他2或3个相同的回答有什么区别? - Starsky

-3
你可以从窗口控制器中实现它(Swift3)。
class WindowController: NSWindowController {

    override func windowDidLoad() {
        super.windowDidLoad()

        window?.titleVisibility = .hidden
    }
}

4
窗口控制器是什么? - MBH
这是针对 macOS 的,不是 iOS。 - Koen.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接