因此,以编程方式从qazxsw点的一个标签切换到另一个标签很容易......
UITabBarController
...但每次对标签索引进行硬编码似乎都非常不优雅。例如,如果重新排序选项卡,则会导致问题。
有没有办法检索特定self.tabBarController?.selectedIndex = 1
的[first]索引,以便代码可能更像下面的内容?
UIViewController
你会想要使用if let destinationIndex = self.tabBarController?.index(of: ExampleViewController) {
self.tabBarController?.selectedIndex = destinationIndex
}
方法。
firstIndex(where:)
对于那些适用的人,这是@if let destinationIndex = self.tabBarController?.viewControllers.firstIndex(where: { $0 is ExampleViewController }) {
self.tabBarController?.selectedIndex = destinationIndex
}
的答案,适用于目标VC嵌入导航控制器时:
Craig Siemens
为tabbar项创建枚举。
如果设计更改了顺序,您可以在枚举中更改它而不更改任何其他内容。
if let destinationIndex = self.tabBarController?.viewControllers?.firstIndex(where: {
let navController = $0 as? UINavigationController
return navController?.viewControllers.first is ExampleViewController
}) {
self.tabBarController?.selectedIndex = destinationIndex
}