如何在Swift的第一个ViewController中隐藏导航栏?

Aby*_*hew 240 uinavigationbar uinavigationcontroller ios swift

如何在第一个ViewController或swift中的特定ViewController中隐藏导航栏?

我使用以下代码viewDidLoad():

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.isNavigationBarHidden = true
}
Run Code Online (Sandbox Code Playgroud)

还有viewWillAppear:

override func viewWillAppear(animated: Bool) {
    self.navigationController?.isNavigationBarHidden = true
}
Run Code Online (Sandbox Code Playgroud)

这两种方法都隐藏了所有ViewControllers的导航控制器.

Ren*_*ers 252

如果您知道所有其他视图都应该显示该栏,则可以使用viewWillDisappear它将其设置为再次可见.

在Swift中:

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

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationController?.setNavigationBarHidden(false, animated: animated)
}
Run Code Online (Sandbox Code Playgroud)

  • 这个答案更有效率。想想你添加的每个新 ViewController 的重复代码。http://stackoverflow.com/a/39679506/5079380 (3认同)

Mic*_*ito 247

斯威夫特3

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    // Hide the navigation bar on the this view controller
    self.navigationController?.setNavigationBarHidden(true, animated: animated)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    // Show the navigation bar on other view controllers
    self.navigationController?.setNavigationBarHidden(false, animated: animated)
}
Run Code Online (Sandbox Code Playgroud)

  • 覆盖不要忘记调用超级方法:super.viewWillAppear(动画)和super.viewWillDisappear(动画) (3认同)

Dee*_*esh 76

您可以取消隐藏navigationControllerviewWillDisappear

override func viewWillDisappear(animated: Bool)
{
    super.viewWillDisappear(animated)
    self.navigationController?.isNavigationBarHidden = false
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特3

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    self.navigationController?.setNavigationBarHidden(false, animated: animated)
}
Run Code Online (Sandbox Code Playgroud)


Ank*_*ara 19

您还可以为此创建扩展,这样您就可以重复使用扩展,而无需在每个视图控制器中反复执行此扩展.

import UIKit

extension UIViewController {
    func hideNavigationBar(){
        // Hide the navigation bar on the this view controller
        self.navigationController?.setNavigationBarHidden(true, animated: true)

    }

    func showNavigationBar() {
        // Show the navigation bar on other view controllers
        self.navigationController?.setNavigationBarHidden(false, animated: true)
    }

}
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用如下的扩展方法

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        hideNavigationBar()
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        showNavigationBar()
    }
Run Code Online (Sandbox Code Playgroud)

  • 不值得延期,是吗?:) (7认同)
  • 取决于您隐藏/显示导航栏的视图数量.我觉得大多数情况下你只隐藏第一个,但如果你做了很多,那么扩展很好. (3认同)

Dil*_*gid 7

在Swift 3中,您还可以使用isNavigationBarHidden属性来显示或隐藏导航栏

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    // Hide the navigation bar for current view controller
    self.navigationController?.isNavigationBarHidden = true;
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    // Show the navigation bar on other view controllers
   self.navigationController?.isNavigationBarHidden = false;
}
Run Code Online (Sandbox Code Playgroud)


Mah*_*ari 5

在 Swift 中隐藏导航栏的方法:

self.navigationController?.setNavigationBarHidden(true, animated: true)
self.navigationController?.navigationBar.isHidden = true
self.navigationController?.isNavigationBarHidden = true
Run Code Online (Sandbox Code Playgroud)


小智 5

想要隐藏第一个 ViewController 上的导航栏

override func viewWillAppear(animated: Bool) {
   self.navigationController?.isNavigationBarHidden = true
}
Run Code Online (Sandbox Code Playgroud)

想要在第二个 ViewController 上显示导航栏

override func viewWillAppear(animated: Bool) {
   self.navigationController?.isNavigationBarHidden = false
}
Run Code Online (Sandbox Code Playgroud)