ios - 如何使用子视图控制器中的按钮单击更改 tabBar 项目标题
问题描述
我UITabBarController
使用了故事板,并通过另一个UITabBarController
类对其进行了自定义,以便根据我的应用程序的要求执行一些更改。
因为我UITabBarController
有 4 个子视图控制器。在我的第一个子视图中,我实现了一个按钮来更改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 来更改 my 的标题,tabBaritem
这个 func 将由我上面提到的第一个子 viewController 调用。但我不知道为什么它返回我为零?但是当我列出所有 tabBaritemviewDidLoad
并且它不返回 nil 时。
这是第一个子视图控制器:
@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)
}
}
解决方案
你可以试试
if let tab = self.tabBarController as? TabbarViewController {
tab.language(false) // or true
}
注意这个 TabbarViewController()。创建另一个实例
推荐阅读
- ios - 当我在搜索器上搜索内容时得到错误的索引
- c# - 在 Windows 中使用服务发送键盘事件
- arduino - Nextion 不向 Arduino 发送数据(recvRetCommandFinished err)
- python - 选择 Python pandas 中的所有行
- reactjs - 显示属于该对象的项目列表
- symfony - symfony assetic 获取 js 文件的 500 错误
- laravel - 当我尝试在 Laravel 中编辑时,值显示为空白
- python - 如何在 Python 中使 json 文件成为列表
- python - 如何在pydatatable中的数据框列上设置键?
- java - Liquibase 不会更新内存中的 h2 数据库