Search code examples
iosobjective-cuiviewcontrollerappdelegateuiwindow

Can [self.window makeKeyAndVisible]; be called before setting rootviewcontroller


My requirement is that UITabBarController is the rootviewcontroller and on very first time of app launch I want to show login procedure which is inside UINavCon, and I am displaying it through presentViewController.

I dont want the UITabBarController visible for first time and dont want to how login UINavCon popping as modal.

I want to make user experience that if app starts for first time login UINavCon should be visible. So here is my code:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

[self.window makeKeyAndVisible];//is it correct to call it here?

LoginVC *loginObj = [[LoginVC alloc]init];

self.navigationController = [[UINavigationController alloc] initWithRootViewController:cellPhoneNumber];

self.tabBarController = [[UITabBarController alloc]init];

self.window.rootViewController = self.tabBarController;

[self.tabBarController presentViewController:self.navigationController animated:NO completion:^{}];

return YES;
}

I am calling [self.window makeKeyAndVisible]; on second line right after uiwindow alloc init. Is it correct do this or I can experience problems like viewcontroller not receiving events or orientations notifications?


Solution

  • you can call it whenever you want. Calling it affects the window's z-index and screen property. it doesnt depend on any specific content being set.