J'ai NavigationController qui gère la navigation dans mon application . Selon ma conception, la toute première vue ne devrait pas avoir de barre de navigation visible. Tous les autres après le feront.
Dans cette FirstView, je l'utilise jusqu'à présent pour masquer la barre de navigation, à l'intérieur du ViewDidLoad:
self.navigationController?.isNavigationBarHidden = true
De cette FirstView, je peux accéder à d'autres vues. Dans ces autres vues, je montre la NavBar en utilisant:
self.navigationController?.isNavigationBarHidden = false
Mon problème est que:
Comment puis-je empêcher cela?
Je vous remercie!
Déplacez ce code vers viewWillAppear()
au lieu de viewDidLoad()
.
viewDidLoad()
n'est appelé qu'une fois par contrôleur de vue instanciée, alors que viewWillAppear()
est appelé chaque fois que le contrôleur de vue est sur le point d'être présenté à l'écran.
Vous pouvez en savoir plus sur le cycle de vie du contrôleur de vue ici .
Ecrivez le code ci-dessous dans votre méthode FirstViewController 's viewWillAppear .
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated);
self.navigationController?.isNavigationBarHidden = true
}
Et dans votre SecondViewController 's - viewWillAppear method write under code
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated);
self.navigationController?.isNavigationBarHidden = false
}
N'essayez pas de masquer et d'afficher la barre de navigation dans viewWillAppear et viewWillDisappear subséquemment dans FirstViewController .
Vous pouvez utiliser cette fonction pour masquer la barre de navigation avec une animation intéressante:
func setupAnimationForNavigationBar(caseOfFunction: Bool) {
if caseOfFunction == true {
UIView.animate(withDuration: 0.5) {
self.navigationController?.navigationBar.transform = CGAffineTransform(translationX: 0, y: -200)
}
} else {
UIView.animate(withDuration: 0.5, animations: {
self.navigationController?.navigationBar.transform = CGAffineTransform.identity
})
}
}
Si vous souhaitez masquer NavigationBar, définissez-le "True" et si vous souhaitez appeler à nouveau NavigationBar, définissez-le "False".