Comment cacher une barre de navigation du premier ViewController dans Swift?

Comment puis-je cacher une barre de navigation depuis le premier ViewController ou un ViewController particulier dans swift?

J'ai utilisé le code suivant dans viewDidLoad() :

 override func viewDidLoad() { super.viewDidLoad() self.navigationController?.isNavigationBarHidden = true } 

et aussi sur viewWillAppear :

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

Les deux methods masquent le controller de navigation de tous les ViewControllers.

Si vous savez que toutes les autres vues doivent avoir la barre visible, vous pouvez utiliser viewWillDisappear pour le rendre visible à nouveau.

Swift 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) } 

Vous pouvez afficher navigationController dans viewWillDisappear

 override func viewWillDisappear(animated: Bool) { super.viewWillDisappear(animated) self.navigationController?.isNavigationBarHidden = false } 

Swift 3

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

Dans Swift 3, vous pouvez également utiliser la propriété isNavigationBarHidden pour afficher ou masquer la barre de navigation

 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; } 

Vous pouvez également créer une extension pour que vous puissiez réutiliser l'extension sans l'implémenter encore et encore dans chaque controller de vue.

 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) } } 

Ainsi, vous pouvez utiliser les methods d'extension comme ci-dessous

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

Vous pouvez le faire depuis le controller de window (Swift3)

 class WindowController: NSWindowController { override func windowDidLoad() { super.windowDidLoad() window?.titleVisibility = .hidden } }