如何在UITabBarController中获取特定UIViewController的索引

时间:2019-04-12 22:02:51

标签: ios swift uiviewcontroller uitabbarcontroller

因此,以编程方式从UITabBarController中的一个选项卡切换到另一个选项卡非常容易...

self.tabBarController?.selectedIndex = 1

...但是每次都对标签索引进行硬编码似乎不太优雅。例如,如果选项卡被重新排序,将会导致问题。

是否有一种方法可以检索特定UIViewController的[first]索引,以便使代码类似于以下内容?

if let destinationIndex = self.tabBarController?.index(of: ExampleViewController) {
    self.tabBarController?.selectedIndex = destinationIndex
}

3 个答案:

答案 0 :(得分:2)

您将要使用firstIndex(where:)方法。

if let destinationIndex = self.tabBarController?.viewControllers.firstIndex(where: { $0 is ExampleViewController }) {
    self.tabBarController?.selectedIndex = destinationIndex
}

答案 1 :(得分:0)

对于适用于它的用户,这是@ Craig Siemens的答案,适用于将目标VC嵌入到导航控制器中的情况。

db.delete(TABLE_FAV_AMEN, KEY_AD_ID + " IN (?)", strIn);

答案 2 :(得分:-1)

为您的标签栏项创建一个枚举。

如果设计更改了顺序,则可以在枚举中更改它,而无需进行其他任何更改。

enum TabbarVCs: Int {
 case home
 case settings
 case profile
}

tabBarController.selectedIndex = TabbarVCs.home.rawValue