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

问题描述 投票:0回答:3

因此,以编程方式从qazxsw点的一个标签切换到另一个标签很容易......

UITabBarController

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

有没有办法检索特定self.tabBarController?.selectedIndex = 1的[first]索引,以便代码可能更像下面的内容?

UIViewController
ios swift uiviewcontroller uitabbarcontroller
3个回答
2
投票

你会想要使用if let destinationIndex = self.tabBarController?.index(of: ExampleViewController) { self.tabBarController?.selectedIndex = destinationIndex } 方法。

firstIndex(where:)

0
投票

对于那些适用的人,这是@if let destinationIndex = self.tabBarController?.viewControllers.firstIndex(where: { $0 is ExampleViewController }) { self.tabBarController?.selectedIndex = destinationIndex } 的答案,适用于目标VC嵌入导航控制器时:

Craig Siemens

-1
投票

为tabbar项创建枚举。

如果设计更改了顺序,您可以在枚举中更改它而不更改任何其他内容。

if let destinationIndex = self.tabBarController?.viewControllers?.firstIndex(where: {
    let navController = $0 as? UINavigationController
    return navController?.viewControllers.first is ExampleViewController
}) {
    self.tabBarController?.selectedIndex = destinationIndex
}
© www.soinside.com 2019 - 2024. All rights reserved.