首页 > 解决方案 > 重新打开选项卡时返回视图层次结构中的初始 ViewController

问题描述

我目前遇到UITabBarControllers 和UINavigationControllers.

假设我有 2ViewControllersUITabBar

MenuOne我有一个指向新的按钮ViewControllerPageOne.

如果我导航到第一个选项卡 ( MenuOne),然后单击带有 push segue to 的按钮PageOne,则选项卡栏仍然存在。如果我点击第二个选项卡 ( MenuTwo) 然后返回MenuOne,我将返回到PageOne我在该视图层次结构中停止的位置。

我的理解是,这是 Apple 的意图,这就是UITabBarControllers使用.UINavigationControllersMenuOneViewController

为了澄清,这就是现在的过程:

MenuOne> *点击按钮* > PageOne> *点击标签* > MenuTwo> *点击标签* >PageOne

这就是我希望它的工作方式:

MenuOne> *点击按钮* > PageOne> *点击标签* > MenuTwo> *点击标签* >MenuOne

有谁知道我该如何解决这个问题?

标签: iosswiftuinavigationcontrolleruitabbarcontroller

解决方案


您可以像这样创建自定义UITabBarController

class MyTabBarController: UITabBarController, UITabBarControllerDelegate {
    override func viewDidLoad() {
        self.delegate = self
    }

    // when a controller is selected...
    func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
        if let vc = viewController as? UINavigationController {
            // pop the navigation controller to root VC
            vc.popToRootViewController(animated: false)
        }
    }
}

在情节提要中,将您的类设置UITabBarControllerMyTabBarController


推荐阅读