我在viewcontroller
中嵌入了navigationcontroller
,将另一个viewcontroller
推入堆栈。推送viewcontroller
的{{1}}有一个embedded viewcontroller
,用于分段/模态显示最终的viewcontroller
。
点击一下按钮,我试图解除最终呈现的viewcontroller
并弹出当前的viewcontroller
并返回初始状态。
到目前为止,我已经能够解雇,但是弹出似乎不适用于解雇的完成处理程序。
我已经尝试打印出层次结构,即self.presentingViewController
,self.navigationController
,self.presentingViewController.presentingViewController
...,所有这些都输出为nil,而且我现在无法回到初始状态状态。
在查看视图层次结构时,最终呈现的viewcontroller
位于UITransitionView
之下,与我之前提到的堆栈的其余部分分开..
任何想法/指导都将不胜感激。
答案 0 :(得分:0)
你能试试吗
if let nav = UIApplication.shared.keyWindow?.rootViewController as? UINavigationController {
self.dismiss(animated:true) {
nav.popToRootViewController(animated:true)
}
}
答案 1 :(得分:0)
既然你提到了segues,我认为unwind segues可能有所帮助。我构建了一个快速测试项目,它们确实在您的场景中正常运行。
在相关的SO问题What are Unwind segues for and how do you use them?中有一个相当优秀的答案。针对您的特定情况的答案摘要是:将以下函数放在初始视图控制器中:
@IBAction func unwindToThisViewController(segue: UIStoryboardSegue)
{
}
然后,您可以直接放松'通过直接使用Storyboard Segues(如引用的答案中)或以编程方式通过:
来访问该viewcontrollerself.performSegue(withIdentifier: "unwindToThisViewController", sender: self)
还有一篇题为Working with Unwind Segues Programmatically in Swift的好文章,其内容详尽。