У меня UITabBarController
используется раскадровка, и я настраиваю ее для другого класса UITabBarController
, чтобы внести некоторые изменения в соответствии с требованиями моего приложения.
Для моего UITabBarController
имеется 4 дочерних viewControllers. И мой первый дочерний вид я реализовал одну кнопку, чтобы изменить заголовок TabBarItem
.
Это мой заказ UITabBarController
класс
class TabbarViewController: UITabBarController {
override func awakeFromNib() {
super.awakeFromNib()
}
override func viewDidLoad() {
super.viewDidLoad()
guard let item = tabBar.items else {
return
}
for i in item {
print("This is tabbar item title \(i.title)")
}
}
func language(_ bool: Bool) {
if bool {
print("This is khmer")
self.tabsController?.tabBar.tabItems[0].title = "tab1"
self.tabsController?.tabBar.tabItems[1].title = "tab2"
self.tabsController?.tabBar.tabItems[2].title = "tab3"
self.tabsController?.tabBar.tabItems[3].title = "tab4"
} else {
self.tabsController?.tabBar.tabItems[0].title = "tab5"
self.tabsController?.tabBar.tabItems[1].title = "tab6"
self.tabsController?.tabBar.tabItems[2].title = "tab7"
self.tabsController?.tabBar.tabItems[3].title = "tab8"
}
}
}
Я создал language
func для изменения названия моего tabBaritem
, и этот функционал будет вызываться первым дочерним viewController, который я упомянул выше. Но я не знаю, почему он возвращает мне ноль? Но когда я перечисляю все tabBaritem в viewDidLoad
, и он не возвращает ноль.
Это первый дочерний viewController:
@IBAction func changeLanguageAction(_ sender: UIButton) {
if CustomLocale.shared.LANGUAGE_IDENTIFIER == "EN" {
if let tab = self.tabBarController as? TabbarViewController {
tab.language(true)
}
sender.setImage(R.image.khmerFlag(), for: .normal)
}else {
if let tab = self.tabBarController as? TabbarViewController {
tab.language(false)
}
sender.setImage(R.image.englishFlag(), for: .normal)
}
}