如果您推送并呈现多个 viewController,如何移动到 parentViewController?
How to move to parentViewController if you push and present multiple viewControllers?
我有一个 tabBar 控制器作为 parent,我正在推送一个带有 navigationController 的视图控制器。然后将上面的 2 个其他视图控制器呈现给它。它就像 Tabbar(homeController) -> Child1(push) -> Child 2(presenting) -> child3(presenting)。我使用计时器解雇了我的最后一个孩子ViewController。当它解雇时我想回到 tabBarController(home)。
let parent = self.presentingViewController
self.dismiss(animated: false, completion: {
parent?.present(vc, animated: true, completion: nil)
})
我把上面的代码放在我的第二个 Child ViewController 中。但它又回到了 child1 viewContoller。这里需要一些帮助。
您应该检查 popToRootViewController 方法。
如果您使用的是故事板,那么首先在您想要 return 的视图控制器上设置展开转场(在本例中为 tabBarController),如下所示:
@IBAction func unwindToTop(segue:UIStoryboardSegue) { }
(只要你启动它就可以随意命名'unwindTo')
然后在 Interface Builder 中创建一个 unwind segue(直接从按钮之类的对象或更通用的视图控制器本身)到视图控制器的出口和 select 应该出现的 unwind segue在列表中。
然后,当通过故事板项目或手动代码执行此转场时,您将 returned 到定义展开转场的视图控制器。系统会为你做所有的反向遍历。
终于在这里找到了另一个选择。
self.view.window!.rootViewController?.dismissViewControllerAnimated(false, completion: nil)
以上代码将关闭所有呈现的 ViewController。如果你把它放在至少 child(child 3 在我的例子中)它会自动关闭我的 child 2, child 3.
let parentVC = self.presentingViewController
if let tabParent = parentVC as? UITabBarController, let firstNav = tabParent.viewControllers![0] as? UINavigationController {
//present child 2
self.present(vc, animated: true, completion: {
firstNav.popToRootViewController(animated: false)// pop to my rootVC
})
}
我有一个 tabBar 控制器作为 parent,我正在推送一个带有 navigationController 的视图控制器。然后将上面的 2 个其他视图控制器呈现给它。它就像 Tabbar(homeController) -> Child1(push) -> Child 2(presenting) -> child3(presenting)。我使用计时器解雇了我的最后一个孩子ViewController。当它解雇时我想回到 tabBarController(home)。
let parent = self.presentingViewController
self.dismiss(animated: false, completion: {
parent?.present(vc, animated: true, completion: nil)
})
我把上面的代码放在我的第二个 Child ViewController 中。但它又回到了 child1 viewContoller。这里需要一些帮助。
您应该检查 popToRootViewController 方法。
如果您使用的是故事板,那么首先在您想要 return 的视图控制器上设置展开转场(在本例中为 tabBarController),如下所示:
@IBAction func unwindToTop(segue:UIStoryboardSegue) { }
(只要你启动它就可以随意命名'unwindTo')
然后在 Interface Builder 中创建一个 unwind segue(直接从按钮之类的对象或更通用的视图控制器本身)到视图控制器的出口和 select 应该出现的 unwind segue在列表中。
然后,当通过故事板项目或手动代码执行此转场时,您将 returned 到定义展开转场的视图控制器。系统会为你做所有的反向遍历。
终于在这里找到了另一个选择。
self.view.window!.rootViewController?.dismissViewControllerAnimated(false, completion: nil)
以上代码将关闭所有呈现的 ViewController。如果你把它放在至少 child(child 3 在我的例子中)它会自动关闭我的 child 2, child 3.
let parentVC = self.presentingViewController
if let tabParent = parentVC as? UITabBarController, let firstNav = tabParent.viewControllers![0] as? UINavigationController {
//present child 2
self.present(vc, animated: true, completion: {
firstNav.popToRootViewController(animated: false)// pop to my rootVC
})
}