Comment masquer une barre de navigation du premier ViewController ou d'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 méthodes masquent le contrôleur de navigation à tous les ViewControllers.
Si vous savez que la barre doit être visible dans toutes les autres vues, vous pouvez utiliser viewWillDisappear
pour le rendre visible à nouveau.
En rapide:
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)
}
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)
}
Vous pouvez également créer une extension pour cela afin de pouvoir la réutiliser sans l'implémenter encore et encore dans chaque contrôleur 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)
}
}
Vous pouvez donc utiliser les méthodes d'extension ci-dessous
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
hideNavigationBar()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
showNavigationBar()
}
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;
}
Façons d'afficher la barre de navigation dans Swift:
self.navigationController?.setNavigationBarHidden(false, animated: true)
self.navigationController?.navigationBar.isHidden = false
self.navigationController?.isNavigationBarHidden = false
Façons de masquer la barre de navigation dans Swift:
self.navigationController?.setNavigationBarHidden(true, animated: true)
self.navigationController?.navigationBar.isHidden = true
self.navigationController?.isNavigationBarHidden = true
Vous pouvez le faire depuis le contrôleur de fenêtre (Swift3)
class WindowController: NSWindowController {
override func windowDidLoad() {
super.windowDidLoad()
window?.titleVisibility = .hidden
}
}
J'utilise une variante de ce qui précède et j'isole des sections de mon application pour qu'elles soient intégrées à différents NavControllers. De cette façon, je n'ai pas à réinitialiser la visibilité. Très utile dans les séquences de démarrage, par exemple.
Dans IOS 8, faites comme
navigationController?.hidesBarsOnTap = true
mais seulement quand il fait partie d'un UINavigationController
le rendre faux quand vous le voulez en arrière
private func setupView() {
view.backgroundColor = .white
navigationController?.setNavigationBarHidden(true, animated: false)
}