标签栏控制器索引改变?
Tab Bar Controller index changing?
我有 2 个选项卡:计算 VC 和浏览 VC;它们按此顺序排列,应用程序在 Calc VC.
上启动
在每个 VC 的视图中使用打印语句 tabbarcontroller.selectedindex 我了解到,当 Calc VC 首次出现时,它显示的索引为 0。当我点击浏览 VC,它显示索引为 1。到目前为止一切顺利。
当我点击 Calc VC 时,它的索引变为 1,而 Browse VC 变为 0。在您退出该应用程序之前,它一直如此。
为什么这是个问题?我试图通过使用 .isEnabled = false 在 Calc VC 处于活动状态时禁用 Browse VC,但由于索引
的变化,我无法那样做
在 viewWillAppear
触发时,selectedIndex 可能不会更改。你应该使用 viewDidAppear
.
override func viewDidAppear(_ animated: Bool) {
print(tabBarController?.selectedIndex)
}
或者您可以使用 tabBar(_:didSelect:) 或 UITabBarDelegate
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
print(tabBar.items?.index(of: item))
}
我有 2 个选项卡:计算 VC 和浏览 VC;它们按此顺序排列,应用程序在 Calc VC.
上启动在每个 VC 的视图中使用打印语句 tabbarcontroller.selectedindex 我了解到,当 Calc VC 首次出现时,它显示的索引为 0。当我点击浏览 VC,它显示索引为 1。到目前为止一切顺利。
当我点击 Calc VC 时,它的索引变为 1,而 Browse VC 变为 0。在您退出该应用程序之前,它一直如此。
为什么这是个问题?我试图通过使用 .isEnabled = false 在 Calc VC 处于活动状态时禁用 Browse VC,但由于索引
的变化,我无法那样做在 viewWillAppear
触发时,selectedIndex 可能不会更改。你应该使用 viewDidAppear
.
override func viewDidAppear(_ animated: Bool) {
print(tabBarController?.selectedIndex)
}
或者您可以使用 tabBar(_:didSelect:) 或 UITabBarDelegate
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
print(tabBar.items?.index(of: item))
}