UITabBarController - 如何切换到特定类型的选项卡

UITabBarController - How to switch to tab of a particular type

我有一个由自定义 class(例如 HomeTabBarController)实现的 UITabBarController,在我的情节提要中我附加了它 3 ViewController 作为它的子项。

我知道我可以在 UITabBarController:

中使用 select 特定的视图控制器
selectedIndex = 2

但我想让我的项目更灵活一点,所以我想 select 子选项卡只知道它的 类型 ,而不是它的位置。我该怎么做?

如 Whosebug 中所述documentation我将回答我自己的问题。

让我们举个例子,你有一个 UITabBarController 和 3 childs:

  • HomeTabBarController
  • CustomAViewController
  • CustomBViewController
  • CustomCViewController

在您的 HomeTabBarController 控制器中,您可以像这样放置一个函数:

func selectCustomATab()    {
    var tab = 0
    
    for v in viewControllers!   {
        for k in v.childViewControllers {
            if k is CustomAViewController  {
                tab = viewControllers!.indexOf(v)!
            }
        }
    }
    
    selectedIndex = tab
}

仅此而已,您可以根据需要重复每个 ViewController child。

然后在任何 ViewController child 中你可以做类似的事情来切换标签:

(self.tabBarController as! HomeTabBarController).selectCustomATab()

完全忽略选项卡数组中的 CustomAViewController 位置。

设置你的标签栏索引值

tabBarController?.selectedIndex = 2