Warning: attempt to present ViewController whose view is not in the window hierarchy Warning: attempt to present ViewController whose view is not in the window hierarchy ios ios

Warning: attempt to present ViewController whose view is not in the window hierarchy


Finally I solved that issue with the following code.

-(void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {       self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];       self.blankviewController = [[blankPageViewController alloc] initWithNibName:@"blankPageViewController" bundle:nil];       self.window.rootViewController = self.blankviewController;       [self.window makeKeyAndVisible];}


Put

[self.viewController presentViewController:myView animated:NO completion:nil];  

into a function e.g.

- (void)yourNewFunction{    [self.viewController presentViewController:myView animated:NO completion:nil];}

and then call it like this:

[self performSelector:@selector(yourNewFunction) withObject:nil afterDelay:0.0];

The problem got described here and why does this performSelector:withObject:afterDelay fix this problem? Because the selector will not be called until the next run of the run loop. So things have time to settle down and you will just skip one run loop.


As per my assumption, I am feeling like you are trying to present myView from self.viewController before self.viewController is attached or placed in window hierarchy. So just make sure to present myView after self.viewController gets appear/attached to window.

Why can't a modal view controller present another in viewDidLoad?