Hinweis: Wenn Sie einen Registerkartenleisten-Controller mit Navigations-Controllern im Stammverzeichnis jedes Ansichts-Controllers haben, wirkt sich das Festlegen des Registerkartenleistenelements auf den Ansichts-Controllern nicht auf den Titel aus, wenn Sie den festlegen navigationItem.title. Sie müssen tabBarItemdas stattdessen auf dem Navigations-Controller einstellen , damit es vom Registerkarten-Controller übernommen wird.
Keine der von anderen geposteten Antworten hat für mich funktioniert, da die View-Controller meiner Registerkartenleiste alle Navigations-Controller im Stammverzeichnis haben - dies ist ein gängiges Hierarchiemuster für UITabBarController. Sie müssen tabBarItemstattdessen den Navigationscontroller einstellen , damit der Titel anders als der Titel des Titels navigationItemangezeigt wird
Sie können Ihre erstellen tabBarItemund sie direkt so Ihrem VC zuordnen.
let tabBarVCOne = BooksListViewController()
tabBarVCOne.tabBarItem = UITabBarItem(title: "Books", image: nil, tag: 0)
tabBarViewControllers.append(tabBarVCOne)
...
Dann haben Sie so etwas:
//Wrap each view controller in a navigation controller.
self.viewControllers = tabBarViewControllers.map(UINavigationController.init)
Dies sollte jedoch wie folgt geändert werden, um das bereits verknüpfte Element tabBarItemvom Ansichts-Controller abzurufen und automatisch auf den Navigations-Controller zu setzen.
self.viewControllers = tabBarViewControllers.map({
let navigationController = UINavigationController(rootViewController: $0)
navigationController.tabBarItem = $0.tabBarItem
return navigationController
})
Sie können jetzt einen anderen Titel (von Ihrem VC festgelegt) als den für Sie definierten Titel festlegen tabBarItem.