Present view controller from app delegate

39,909

Solution 1

You can also try:

[[[UIApplication sharedApplication] keyWindow] rootViewController]

How I use it:

#define ROOTVIEW [[[UIApplication sharedApplication] keyWindow] rootViewController]
[ROOTVIEW presentViewController:interstitialViewController animated:YES completion:^{}];

Solution 2

Swift 3 version for checked response :

UIApplication.shared.keyWindow?.rootViewController

Solution 3

Swift 5 and up

Check this:

UIApplication.shared.windows.first?.rootViewController
Share:
39,909
mikeholp
Author by

mikeholp

Travel photographer, digital nomad, business consultant, blogger.

Updated on July 12, 2022

Comments

  • mikeholp
    mikeholp almost 2 years

    I'm attempting to present a view controller from the app delegate with this code:

    - (void)interstitialViewControllerRequestSucceeded:(UIViewController *)interstitialViewController
    {
        [self.window.rootViewController presentViewController:(UIViewController *)interstitialViewController animated:YES completion:NULL];
    }
    

    It will display the interstitial on the initial view controller but none of the others. I want it to display on every one attached to a navigation controller.

    How can I modify this code to achieve that goal?