我有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
函数,以执行tabBaritem
的标题更改,该函数将由我上面提到的第一个子viewController调用。但是我不知道为什么它返回零?但是当我在viewDidLoad
中列出所有tabBaritem时,它不会返回nil。
这是第一个子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)
}
}
答案 0 :(得分:1)
您可以尝试
if let tab = self.tabBarController as? TabbarViewController {
tab.language(false) // or true
}
请注意此TabbarViewController()。创建另一个实例
答案 1 :(得分:0)
已解决。我刚刚在viewDidLoad中删除了以下代码,并将其传递给language
func。这意味着我们可以一次调用tabBar.items。这就是为什么当我尝试在language
函数中第二次调用时返回零的原因。
guard let item = tabBar.items else {
return
}