简体   繁体   中英

Dismissing presented view controller won't work

I've got a kind of complicated modal segue setup in my project. I'm trying to dismiss a view controller another view controller previously presented. I'm doing so with this code:

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

The print s are there for debugging purposes. They show that the presentedViewController doesn't actually get closed. Even though I've set animated to false, I still see an animation occuring in the app when dismiss is called. Yet, the VC doesn't actually get dismissed. Anyone knows a solution?

Apple

The presenting view controller is responsible for dismissing the view controller it presented. If you call this method on the presented view controller itself, UIKit asks the presenting view controller to handle the dismissal.

dismiss(animated:completion:) dismisses the view controller that was presented modally by the view controller.

https://developer.apple.com/documentation/uikit/uiviewcontroller/1621505-dismiss

If you present a view controller from the app's root, for example:

Presenting view controller

let root = UIApplication.shared.keyWindow!.rootViewController!
root.present(someViewController, animated: true, completion: nil)

You would dismiss it from the presented view controller like so:

Presented view controller

let root = UIApplication.shared.keyWindow?.rootViewController
root?.dismiss(animated: true, completion: nil)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM