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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在UITabBarController中获取特定UIViewController的索引相关的知识,希望对你有一定的参考价值。

因此,以编程方式从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
}

以上是关于如何在UITabBarController中获取特定UIViewController的索引的主要内容,如果未能解决你的问题,请参考以下文章

如何从 View 获取数据到 UITabBarController

如何获取现有的 UITabBarController 实例?

在UINavigation Controller中获取UITabBarController中View Controller的currentViewController

当用户返回到 UITabBarController 选项卡时如何刷新表数据

UITableViewCell 获取UITabBarController

在呈现的 ViewController/NavigationController 上获取 UITabBarController