解除呈现的视图控制器将不起作用

时间:2017-12-02 20:53:55

标签: ios swift

我的项目中有一种复杂的模态segue设置。我试图解除视图控制器之前提出的另一个视图控制器。我正在使用这段代码:

if(self.presentedViewController != nil){
    print(self.presentedViewController!)
    self.presentedViewController!.dismiss(animated: false)
    print(self.presentedViewController!)
}

print用于调试目的。它们表明presentViewController实际上并没有关闭。 即使我将animated设置为false,我仍然会在调用dismiss时看到app中出现动画。然而,VC实际上并没有被解雇。 有人知道解决方案吗?

1 个答案:

答案 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)