首页 > 解决方案 > 如何隐藏 Tabbarcontroller 的第一个视图控制器并直接转到下一个控制器但应在底部显示标签栏项目

问题描述

我有一个视图控制器作为我的初始视图控制器。其中有一个按钮(GO 按钮),当用户点击它时,它应该转到另一个视图控制器(我们称它为目标视图控制器,标签为“这是我想去的地方”)。同时我想通过一个 Tabbar 控制器传递它。原因是我想在我的导航堆栈中有标签栏。我希望在按下 go 按钮的同时直接进入目标视图控制器,但它应该在底部显示标签栏项目。因此,为了在 FirstViewController didLoadMethod 中实现这一点,我检查了一个布尔值并将视图控制器推送到目标视图控制器。我实现了结果,即当按下 Go 按钮时,它转到 Destination 视图控制器并在其底部有标签栏项目。但是问题是,因为它通过 Tabbarcontroller,FirstViewController 会显示几秒钟,然后它会推送到 Destination 视图控制器。我希望在此转换发生时隐藏 FirstViewController。如何做到这一点?图片显示了我想要的。将 firstviewcontroller 放在导航堆栈中时,我该怎么做才能隐藏它?在此处输入图像描述

标签: iosxcodeswift3uitabbarcontroller

解决方案


您试图产生的效果在故事板中很难做到。以编程方式,您只需创建 Tabbar 控制器(及其子级)和“这是我想去的地方”控制器,然后要求导航控制器同时显示两者。

例如,点击“Go”后,我将在您的第一个视图控制器中运行以下代码:

    let tabBarController = UITabBarController()
    let finalDestination = UIViewController()

    var viewControllers = self.navigationController?.viewControllers ?? []
    viewControllers.append(tabBarController)
    viewControllers.append(finalDestination)

    self.navigationController?.setViewControllers(viewControllers, animated: true)

推荐阅读