我一直在使用tabBarController selectedIndex来确定是否应该显示导航栏。今天大部分时间一切正常,但现在这行代码:
self.tabBarController.selectedIndex
提供最后选择的索引而不是当前选定的索引。我在viewWillAppear中运行这行代码,以确保tabBarController中具有索引1的特定视图不会在其第一个视图上显示其导航栏。
但它报告了1次点击。例如,当我单击第二个索引然后单击第一个索引时,我的最后一次单击显示为已选择索引2处的视图控制器,即使我刚刚单击了索引1的视图控制器。此外,selectedIndex始终是我第一次单击任何视图控制器时正确列出但在第一次通过tabBarController查看后从未更正。
我查看了tabBarController类的引用,但看起来这个selectedIndex属性应该是直截了当的。我错过了什么?
答案 0 :(得分:0)
您遇到的问题是在索引实际更改之前调用了viewWillAppear。 首先,tabBarController应该选择ViewController - > viewWillAppear - > tabBarController didSelectViewController - > viewDidAppear。 我有一个类似的设置,我在不同的tabBar索引中重用ViewControllers。我不想在viewDidAppear中检查selectedIndex,即使这样可以解决问题。 我为解决问题所做的是通过标签。两个ViewControllers都有不同的UINavigationController,我将一个navBar的标记设置为1.每当我需要知道哪个Controller处于活动状态时,我现在检查标记。