Программная настройка заголовка tabBarItem в Swift
У меня есть четыре UIViewControllers, которые связаны с панелью вкладок UITabBarController. Мне нужно установить заголовки элементов панели вкладок вне раскадровки и внутри их классов.
Я пробовал..
class MyViewController: UIViewController {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.title = NSLocalizedString(MyConstants.StringKeys.TabName, tableName: Constants.Strings.MyTable, comment: Constants.EmptyString);
}
}
Это называется, но название не установлено. То же самое с собой.tabBarItem.title = "название"
Я также попытался установить заголовок в viewDidLoad, но это только обновляет заголовок после перехода в представление контроллер.
мысли?
5 ответов
вы можете установить заголовки вкладок в самих контроллерах представления в viewDidLoad
установив контроллер вида title
собственность.
title = "Number 0"
кроме того, если вы хотите установить заголовки с вашего контроллера панели вкладок, вы можете установить их так в viewDidLoad
:
tabBar.items?[0].title = "Number 0"
tabBar.items?[1].title = "Number 1"
Я понял это, похоже, что это было написано awakeFromNib ().
override func awakeFromNib() {
super.awakeFromNib()
self.title = NSLocalizedString(MyConstants.StringKeys.TabName, tableName: Constants.Strings.MyTable, comment: Constants.EmptyString);
}
я пошевелился.назначение титула там и исправило мою проблему.
вот решение в каждом viewController.Свифт файл вы можете просто добавить следующий код
override func awakeFromNib() {
self.tabBarItem.title = "title"
self.tabBarItem.image = "image.png"
}
Это супер простой метод awakeFromNib, и вы можете легко вызвать любую вещь, когда nib создал простой при запуске, потому что в ViewDidLoad или любой метод viewControllerDelegate вызывается при нажатии или выборе. Так что это очень простая функция.
спасибо.
Я пробовал разные решения, но единственное, что работал для меня было добавление панели вкладок настроить код viewWillAppear
метод UITabBarController
. Я не делаю этого в каждом контроллере вида индивидуально, потому что он работает только при нажатии кнопки панели вкладок:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
guard let items = tabBar.items else { return }
items[0].title = "Title0"
items[1].title = "Title1"
items[2].title = "Title2"
items[3].title = "Title3"
}
если вы создадите свой ViewControllers
программно, прежде чем положить к TabBarController
, попробуйте это:
override init(style: UITableViewStyle) {
super.init(style: style)
self.title = "Title"
}
или это, если это не TableViewController
:
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
self.title = "Title"
}