swift - 标签栏控制器索引更改?
问题描述
我有 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 但由于索引的变化,我不能这样做
解决方案
在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))
}
推荐阅读
- reactjs - 在 iphone safari 中按下按钮后音频不播放
- visual-studio - 所有计算都在寄存器中进行。为什么堆栈没有在这里存储寄存器计算的结果
- javascript - 在回调中改变数组
- delphi - 在 IdHTTPServer 中动态更改 SSL 证书
- javascript - 断开连接后 Socket.connect 不起作用
- c - while 循环不会执行
- mysql - 使用 req.params node.js 进行多次搜索
- c++ - 固定数量的参数包元素来初始化模板类
- c - 如何从通过 SPI 与 FPGA 连接的加速度计访问数据
- google-cloud-platform - Cache-Control 元数据标头是否应该在具有存储桶级 IAM 策略的 Google Cloud Storage 存储桶中得到尊重?