我已经实现了SWRevealViewController
类,用于显示前控制器后面的后视(左和/或右)视图控制器。 UIViewController类型的SWRevealViewController是应用程序中的入口点。
我想要什么?
在class AppDelegate
调用applicationDidEnterBackground
时,我想弹出除根视图控制器之外的堆栈上的所有视图控制器并更新显示。
我尝试了什么?
if let appDelegate = UIApplication.shared.delegate as? AppDelegate {
appDelegate.window?.rootViewController?.dismiss(animated: true, completion: nil)
}
我知道如果SWRevealViewController
嵌入在UINavigationController中,我可以简单地执行(appDelegate.window?.rootViewController as? UINavigationController)?.popToRootViewController(animated: true)
,但它没有嵌入到nav控制器中,如果我嵌入它,那么我将不会得到相同的行为那么我该如何解决这个问题呢?
答案 0 :(得分:0)
我相信你要做的就是“放松世界”。
它们记录在技术说明中:
https://developer.apple.com/library/content/technotes/tn2298/_index.html
有了这个,你应该能够将你的根视图控制器识别为展开segue的目标,并且在需要的时候,按照它发生的各个步骤进行展开。
您还可以查看包含术语“展开”的UIViewController的各种方法的文档
https://developer.apple.com/documentation/uikit/uiviewcontroller
答案 1 :(得分:0)
尝试一下:
let navVC = ((UIApplication.shared.delegate as? AppDelegate)?.window)?.rootViewController as? UINavigationController
for VC: UIViewController in (navVC?.viewControllers)! {
if (VC is MYViewController) {
navVC?.popToViewController(VC, animated: true)
break
}
}