首页 > 解决方案 > 标签栏控制器索引更改?

问题描述

我有 2 个选项卡:Calc VC 和 Browse VC;它们按此顺序排列,并且应用程序在 Calc VC 上启动。

使用打印语句 tabbarcontroller.selectedindex in viewwillappear of each VCs 我了解到,当 Calc VC 首次出现时,它显示的索引为 0。当我点击 Browse VC 时,它显示的索引为 1。到目前为止一切都很好。

当我点击 Calc VC 时,它的索引变为 1,而 Browse VC 变为 0。它会保持这种状态,直到您退出应用程序。

为什么这是一个问题?当 Calc VC 处于活动状态时,我尝试使用 .isEnabled = false 禁用 Browse VC 但由于索引的变化,我不能这样做

标签: swiftindexinguitabbarcontroller

解决方案


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))
}

推荐阅读