我的项目中有一种复杂的模态segue设置。我试图解除视图控制器之前提出的另一个视图控制器。我正在使用这段代码:
if(self.presentedViewController != nil){
print(self.presentedViewController!)
self.presentedViewController!.dismiss(animated: false)
print(self.presentedViewController!)
}
print
用于调试目的。它们表明presentViewController实际上并没有关闭。
即使我将animated
设置为false,我仍然会在调用dismiss时看到app中出现动画。然而,VC实际上并没有被解雇。
有人知道解决方案吗?
答案 0 :(得分:5)
<强>苹果强>
呈现视图控制器负责解除视图 它呈现的控制器。如果在显示的视图上调用此方法 控制器本身,UIKit要求呈现视图控制器处理 解雇。
dismiss(animated:completion :)解散视图控制器 由视图控制器以模态方式呈现。
https://developer.apple.com/documentation/uikit/uiviewcontroller/1621505-dismiss
如果您从应用程序的根目录中显示视图控制器,例如:
呈现视图控制器
let root = UIApplication.shared.keyWindow!.rootViewController!
root.present(someViewController, animated: true, completion: nil)
您可以将其从提供的视图控制器中删除,如下所示:
呈现视图控制器
let root = UIApplication.shared.keyWindow?.rootViewController
root?.dismiss(animated: true, completion: nil)