Remarque: Si vous avez un contrôleur de barre d'onglets avec des contrôleurs de navigation à la racine de chaque contrôleur de vue, la définition de l'élément de barre d'onglets sur les contrôleurs de vue n'affectera pas le titre si vous définissez le navigationItem.title
. Vous devrez tabBarItem
plutôt définir le sur le contrôleur de navigation pour qu'il soit récupéré à partir du contrôleur de la barre d'onglets.
Aucune des réponses publiées par d'autres n'a fonctionné pour moi parce que les contrôleurs de vue de ma barre d'onglets ont tous des contrôleurs de navigation à leur racine - c'est un modèle de hiérarchie courant pour UITabBarController
. Vous devez définir le contrôleur de navigation à la tabBarItem
place pour que le titre s'affiche différemment du navigationItem
titre du.
Vous pouvez créer vos tabBarItem
et les associer directement à votre VC comme tel.
let tabBarVCOne = BooksListViewController()
tabBarVCOne.tabBarItem = UITabBarItem(title: "Books", image: nil, tag: 0)
tabBarViewControllers.append(tabBarVCOne)
...
Ensuite, vous aurez quelque chose comme ça:
//Wrap each view controller in a navigation controller.
self.viewControllers = tabBarViewControllers.map(UINavigationController.init)
Mais cela devrait être changé comme suit afin de récupérer le déjà associé tabBarItem
du contrôleur de vue et de le définir automatiquement sur le contrôleur de navigation.
self.viewControllers = tabBarViewControllers.map({
let navigationController = UINavigationController(rootViewController: $0)
navigationController.tabBarItem = $0.tabBarItem
return navigationController
})
Vous pourrez maintenant avoir un titre différent (défini à partir de votre VC) séparé du titre défini pour votre tabBarItem
.