Pieter Pieter - 2 days ago 3
iOS Question

How can I check if a modal view is currently over my self.window.rootViewController?

I need to check if there is still a modal view over the root view controller.
The problem I am facing is that I have a second modal view coming from some thread that needs to be displayed. I want to delay the second modal view until the first one is gone.
I cannot just launch it after the first is dismissed because the second modal view is conditional.

[self.window.rootViewController presentModalViewController:vc animated:YES];


What I want to do (feel free to suggest a better alternative way):


  1. Check if
    self.window.rootViewController
    currently has a modal view displayed on top (or is still animating modal view).

  2. use
    performSelector:afterDelay:0.1

  3. Check again, and if needed, delay again


Answer

Get rootViewController.presentedViewController (available in iOS 5.0+) or rootViewController.modalViewController (available in iOS 2.0+) and see if it's nil.

Also, you don't want to present the second view controller from the secondary thread, all UI stuff has to be done on the main thread.

Comments