导航到 UITabBarController 上的某个选项卡

Posted

技术标签:

【中文标题】导航到 UITabBarController 上的某个选项卡【英文标题】:Navigate to a certain tab on a UITabBarController 【发布时间】:2017-07-21 18:06:53 【问题描述】:

在一个 Objective-C Xcode 项目中,我目前已将 5 个不同的 ViewControllers 设置为选项卡栏上的 5 个不同选项卡(a、b、c、d、e)。每当我尝试从我的应用程序中除 a-e 之外的视图导航回此选项卡栏控制器时,我只能导航到 TabBarVC 的“a”视图(第一个视图)。如何导航以从其他视图说出此标签栏的 c 视图?

【问题讨论】:

导航到标签栏的“a”视图后,使用 selectedIndex 移动到“c”标签 【参考方案1】:

您应该导航到 TabBarVC 传递参数 initialIndex 告诉应该显示哪个选项卡。然后重写viewWillAppear(_:) 方法并将selectedIndex 设置为initialIndex (0..<numberOfControllers) 以设置初始选择的选项卡。

class TabBarVC: UITabBarController 

    ...

    var initialIndex: Int?

    ...

    override func viewWillAppear(_ animated: Bool) 
        super.viewWillAppear(animated)

        if let initialIndex = initialIndex, let count = self.viewControllers?.count, initialIndex < count 
            self.initialIndex = nil
            self.selectedIndex = initialIndex
        
    

如果你使用 segue,这可以在源控制器中完成:

override func prepare(for segue: UIStoryboardSegue, sender: Any?)

否则,只需在呈现控制器之前设置initialIndex

【讨论】:

以上是关于导航到 UITabBarController 上的某个选项卡的主要内容,如果未能解决你的问题,请参考以下文章

导航到另一个 UIViewController 后,UITabBarController 消失

如何从 UITabBarController 页面导航到具有 PUSH 样式的另一个视图控制器

UINavigationController到UITabBarController

UITabBarController 中的 UISearchController 没有响应触摸

如何在 Swift 上使用带有 Storyboard 的 UITabBarController 内的导航控制器

UITabBarController 隐藏更多导航栏