重新打开标签页时,返回到视图层次结构中的初始ViewController

时间:2019-01-18 06:26:26

标签: ios swift uinavigationcontroller uitabbarcontroller

我目前遇到UITabBarControllerUINavigationControllers的问题。

假设我的ViewControllers中有2个UITabBar

  • MenuOne

  • MenuTwo

MenuOne上,我有一个按钮可以引至新的ViewControllerPageOne

如果我导航到第一个标签(MenuOne),然后在将按钮推到PageOne的情况下单击按钮,则标签栏仍然存在。如果我点击第二个选项卡(MenuTwo),然后返回到MenuOne,则会返回到PageOne,在该视图层次结构中该位置不存在。

我的理解是,这是Apple的意图,也是UITabBarControllersUINavigationControllers一起工作的方式,但是当我在MenuOne的几个ViewController中时,我不想要我的用户可以浏览这些标签,而不会被重定向到初始的ViewController

为澄清起见,现在的过程是这样的:

MenuOne> * 攻丝按钮 *> PageOne> * 攻丝选项卡 *> MenuTwo> * 攻丝标签 *> PageOne

这就是我想要的工作方式:

MenuOne> * 攻丝按钮 *> PageOne> * 攻丝选项卡 *> MenuTwo> * 攻丝标签 *> MenuOne

有人知道我该怎么解决吗?

1 个答案:

答案 0 :(得分:3)

您可以像这样创建自定义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)
        }
    }
}

在情节提要中,将UITabBarController的类设置为MyTabBarController