J'essaie de définir le titre de Navigation Bar
dans Swift, je mets Tab Bar
et en Navigation Bar
rien ne s'affiche, pas de bouton, pas de titre, rien. J'ai utilisé du code mais cela ne fonctionne pas lorsque j'utilise Tab Bar
, et quand j'ai supprimé Tab Bar
, le code fonctionne et tout va bien avec Navigation Bar
, le titre s'affiche et les boutons s'affichent.
Le code que j'ai utilisé pour le titre est:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = "My Title"
}
Et en Main.storyboard
Je me suis connecté Navigation Controller
avec Tab Bar Controller
, comme sur l'image.
Alors, comment y remédier? Le problème est que Navigation Bar
ne fonctionne pas lors de l'utilisation de Tab Bar
.
Depuis le Tab Bar
est en fait le Root View Controller
du Navigation Bar
, vous devez définir à la place UITabBarController
title
dans la fonction viewWillAppear
pour que cela se produise à chaque changement d'onglet:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.tabBarController?.navigationItem.title = "My Title"
self.tabBarController?.navigationItem.leftBarButtonItem = settingsButton //This is the IBOutlet variable that you previously added
}
Mais une meilleure façon de le faire serait de l'avoir dans l'autre sens, comme ça
Vous devez connecter un UINavigationController
pour chaque enfant du UITabBarController
, car il est plus correct sémantiquement et plus simple à maintenir.
Votre question n'est pas claire, si le code que vous avez présenté est de UIViewController
qui est conservé à l'intérieur de UINavigationController
et navigationBar
est affiché, vous pouvez simplement utiliser:
override func viewDidLoad() {
super.viewDidLoad()
self.title = "My Title"
}
Dans Référence de classe UINavigationController Apple a écrit ceci:
init (rootViewController: UIViewController)
Paramètres rootViewController
Le contrôleur de vue qui se trouve au bas de la pile de navigation. Cet objet ne peut pas être une instance de la classe UITabBarController.
Mais vous pouvez le faire si vous avez insisté, mais dans ce cas, vos ViewControllers de tabbarController ont tous partagé le même titre, qui est le titre de tabbarController.
Une meilleure façon de le faire est de donner à chacun des viewControllers de tabbarController un NavigationViewController.