If you define a main storyboard in your project, iOS automatically does a lot of work for you to set up your app.When your app calls theUIApplicationMainfunction, iOS performs the following actions:
-
It instantiates the app delegate based on the class name you passed into theUIApplicationMainfunction.
-
It creates a new window attached to the main screen.
-
If your app delegate implements awindowproperty, iOS sets this property to the new window.
-
It loads the main storyboard referenced in the app’s information property list file.
-
It instantiates the main storyboard’s initial view controller.
-
It sets the window’srootViewControllerproperty to the new view controller.
-
It calls the app delegate’sapplication:didFinishLaunchingWithOptions:method. Your appdelegate is expected to configure the initial view controller (and its children, if it is a container viewcontroller).
-
It calls the window’smakeKeyAndVisiblemethod to display the window.
The app delegate configures the controller
<span style="font-size:18px;">- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UINavigationController *navigationController = (UINavigationController*) self.window.rootViewController; BirdsMasterViewController * firstViewController = [[navigationController viewControllers] objectAtIndex:0]; BirdSightingDataController *dataController = [[BirdSightingDataController alloc] init]; firstViewController.dataController = dataController; return YES; } </span>
Creating the window when a main storyboard is not being used
<span style="font-size:18px;">- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard" bundle:nil]; MainViewController *mainViewController = [storyboard instantiateInitialViewController]; self.window.rootViewController = mainViewController; // Code to configure the view controller goes here. [self.window makeKeyAndVisible]; return YES; }</span>