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 tabBarItemplutô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 tabBarItemplace pour que le titre s'affiche différemment du navigationItemtitre du.
Vous pouvez créer vos tabBarItemet 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é tabBarItemdu 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.