How do I access my viewController from my appDelegate? iOS

ios, storyboard, uikit, uiviewcontroller

Solution

You can access it with:

MyViewController* mainController = (MyViewController*)  self.window.rootViewController;

If you are nesting your view behind a tabviewcontroller or navigation controller it will return that to you and you will need to access your view controller inside of it

Problem

I have an iOS app I created as a "view-based app" in xCode. I have only one viewController, but it is displayed automatically, and I see no code that ties it to my appDelegate. I need to pass data from my appDelegate to my viewController, but don't know how to pull that off. My app delegate.h: ``` #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) NSDictionary *queryStrings; @end ``` Also, appDidFinishLoadingWithOptions: ``` - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [[JMC sharedInstance] configureJiraConnect:@"https://cmsmech.atlassian.net/" projectKey:@"WTUPLOAD" apiKey:@"7fc060e1-a795-4135-89c6-a7e8e64c4b13"]; if ([launchOptions objectForKey:UIApplicationLaunchOptionsURLKey] != nil) { NSURL *url = [launchOptions objectForKey: UIApplicationLaunchOptionsURLKey]; NSLog(@"url received: %@", url); NSLog(@"query string: %@", [url query]); NSLog(@"host: %@", [url host]); NSLog(@"url path: %@", [url path]); queryStrings = [self parseQueryString:[url query]]; NSLog(@"query dictionary: %@", queryStrings); } else { queryStrings = [self parseQueryString:@"wtID=nil"]; } return YES; } ```

Original source