Ios 在选项卡之间移动后返回选项卡栏的主ViewController
我正在用Swift 2.3、XCode 8.0开发一个iOS应用程序。我的应用程序有4个选项卡,每个选项卡连接4个不同的视图控制器。在4个视图控制器中,我嵌入了导航控制器 我的要求是,当用户选择tab 1->转到ViewController 1->下一步时,用户可以转到第二视图控制器,因为有一个导航控制器。 但是,当用户选择第二个选项卡,然后返回第一个选项卡时,将显示上次使用“后退”按钮打开的视图控制器,而不是显示直接连接到选项卡1的第一个视图控制器。Ios 在选项卡之间移动后返回选项卡栏的主ViewController,ios,uiviewcontroller,swift2.3,Ios,Uiviewcontroller,Swift2.3,我正在用Swift 2.3、XCode 8.0开发一个iOS应用程序。我的应用程序有4个选项卡,每个选项卡连接4个不同的视图控制器。在4个视图控制器中,我嵌入了导航控制器 我的要求是,当用户选择tab 1->转到ViewController 1->下一步时,用户可以转到第二视图控制器,因为有一个导航控制器。 但是,当用户选择第二个选项卡,然后返回第一个选项卡时,将显示上次使用“后退”按钮打开的视图控制器,而不是显示直接连接到选项卡1的第一个视图控制器。 如何直接移动到附加到第一个选项卡的视图控制
如何直接移动到附加到第一个选项卡的视图控制器?嵌入式导航控制器应自动为您跟踪堆栈,无论用户使用选项卡栏控制器处于哪个选项卡。确保每个选项卡都嵌入了自己的导航控制器,而不是将整个选项卡栏控制器嵌入到一个导航控制器中 例如,如果以编程方式实现此功能:
let viewController1 = UIViewController()
let navigationController1 = UINavigationController()
navigationController1.setViewControllers([viewController1], animated: true)
let viewController2 = UIViewController()
let tabBarController1 = UITabBarController()
tabBarController1.setViewControllers([navigationController1, viewController2], animated: true)
在这里,navigationController1将跟踪哪个viewController位于堆栈顶部,而不管用户在选项卡栏控制器中的哪个位置 嵌入式导航控制器应自动为您跟踪堆栈,无论用户使用选项卡栏控制器处于哪个选项卡。确保每个选项卡都嵌入了自己的导航控制器,而不是将整个选项卡栏控制器嵌入到一个导航控制器中 例如,如果以编程方式实现此功能:
let viewController1 = UIViewController()
let navigationController1 = UINavigationController()
navigationController1.setViewControllers([viewController1], animated: true)
let viewController2 = UIViewController()
let tabBarController1 = UITabBarController()
tabBarController1.setViewControllers([navigationController1, viewController2], animated: true)
在这里,navigationController1将跟踪哪个viewController位于堆栈顶部,而不管用户在选项卡栏控制器中的哪个位置 谢谢,我找到了解决办法- 这对我有用- 在我的主选项卡栏viewController中,我让它成为
uitabarcontroller和uitabarcontrollerdelegate
的代理,然后实现didSelectViewController
的uitabarcontrollerdelegate
方法,如下所示-
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
let index : Int = (tabBarController.viewControllers?.indexOf(viewController))!
let navigationController = viewController as? UINavigationController
navigationController?.popToRootViewControllerAnimated(false)
}
谢谢,我找到了解决办法- 这对我有用- 在我的主选项卡栏viewController中,我让它成为
uitabarcontroller和uitabarcontrollerdelegate
的代理,然后实现didSelectViewController
的uitabarcontrollerdelegate
方法,如下所示-
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
let index : Int = (tabBarController.viewControllers?.indexOf(viewController))!
let navigationController = viewController as? UINavigationController
navigationController?.popToRootViewControllerAnimated(false)
}
我在故事板中实现了ViewController、NavigationController和TabController之间的连接,而不是以编程方式。那么,如何从更改选项卡上的子视图控制器访问父视图控制器呢。请告知。我已经在情节提要中实现了ViewController、NavigationController和TabController之间的连接,而不是以编程方式实现的。那么,如何从更改选项卡上的子视图控制器访问父视图控制器呢。请告知。