Как установить название навигационной панели в Swift? [дубликат]
этот вопрос уже есть ответ здесь:
я пытаюсь установить заголовок Navigation Bar
в Swift, я поставил Tab Bar
и Navigation Bar
ничего не отображается, нет кнопки, нет заголовка, ничего. Я использовал код, но это не работает, пока я использую Tab Bar
, и когда я удалить Tab Bar
, код работает и все ок с Navigation Bar
, отображается заголовок и отображаются кнопки.
код, который я использовал для заголовка:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = "My Title"
}
и Main.storyboard
я подключил Navigation Controller
С Tab Bar Controller
, как на фото.
Итак, как это исправить ? Проблема в том, что Navigation Bar
не работает при использовании Tab Bar
.
3 ответов
С Tab Bar
на самом деле Root View Controller
на Navigation Bar
, вам необходимо установить UITabBarController
' s title
вместо viewWillAppear
функция так, что это происходит каждый раз, когда вы переключаете вкладки:
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
}
но лучший способ сделать это на самом деле было бы иметь его наоборот, как так
вы должны подключить UINavigationController
для каждого ребенка UITabBarController
, как правильнее семантически, так и проще поддерживать.
Ваш вопрос неясен, если код, который вы представили с UIViewController
что хранится внутри UINavigationController
и navigationBar
отображается, вы можете просто использовать:
override func viewDidLoad() {
super.viewDidLoad()
self.title = "My Title"
}
на Ссылка На Класс UINavigationController Apple написал это:
init (rootViewController: UIViewController)
Параметры rootViewController
Контроллер вида, расположенный в нижней части стека навигации. Этот объект не может быть экземпляром класса UITabBarController.
но вы можете сделать это, если вы настаиваете.Но в этом случае ваши ViewControllers tabbarController все разделяли одно и то же название, которое является названием tabbarController.
лучший способ сделать это-дать каждому из ViewController tabbarController NavigationViewController.