Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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
like image 259
Pieter Avatar asked May 19 '12 15:05

Pieter


1 Answers

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.

like image 84
tux91 Avatar answered Nov 09 '22 01:11

tux91