1

我正在使用 Swift 2.3、XCode 8.0 开发 iOS 应用程序。我的应用程序有 4 个选项卡,每个选项卡都连接了 4 个不同的视图控制器。在 4 个视图控制器中,我嵌入了导航控制器。

我的要求是,当用户选择选项卡 1 -> 转到 ViewController 1 -> 接下来,用户可以转到第二个视图控制器,因为有一个导航控制器。但是当用户选择第二个选项卡然后返回到第一个选项卡时,不会显示直接附加到选项卡 1 的第一个视图控制器,而是显示最后一次使用后退按钮打开的视图控制器。如何直接移动到附加到第一个选项卡的视图控制器?

4

2 回答 2

0

无论用户使用标签栏控制器在哪个标签中,嵌​​入式导航控制器都应自动为您跟踪堆栈。确保每个选项卡都嵌入了自己的导航控制器,而不是将整个选项卡栏控制器嵌入到一个导航控制器中。

例如,如果您以编程方式实现此:

    let viewController1 = UIViewController()
    let navigationController1 = UINavigationController()

    navigationController1.setViewControllers([viewController1], animated: true)

    let viewController2 = UIViewController()

    let tabBarController1 = UITabBarController()
    tabBarController1.setViewControllers([navigationController1, viewController2], animated: true)

在这里,无论用户在标签栏控制器中的哪个位置,navigationController1 都会跟踪堆栈顶部的视图控制器。

于 2016-12-02T15:41:58.393 回答
0

谢谢,我找到了解决方案-

这对我有用 - 在我的主标签栏视图控制器中,我将它设为两者的代表,UITabBarController, UITabBarControllerDelegate然后实现如下didSelectViewController方法UITabBarControllerDelegate-

func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
    let index : Int = (tabBarController.viewControllers?.indexOf(viewController))!

    let navigationController = viewController as? UINavigationController
        navigationController?.popToRootViewControllerAnimated(false)

}
于 2016-12-05T06:26:04.710 回答