So I maybe found a solution to this issue, using the AppDelegate.m. If you're using Storyboards, you don't need to import in the AppDelegate.h the ViewController classes, cause you're referencing them using StoryboardID. It looks something like this:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
BOOL userLoggedIn = NO;
if (userLoggedIn) {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"NowPlaying04"];
[self.window setRootViewController:controller];
} else {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"Start00"];
[self.window setRootViewController:controller];
}
[self.window makeKeyAndVisible];
// Override point for customization after application launch.
return YES;
}
Obviously you'll need to set identifiers on the view controllers through the InterfaceBuilder/Storyboard properties. Setting a different value to the BOOL variable userLoggedIn the app loads with the relative rootViewController.
Now the Storyboard looks like this:
Which is much more organized. isInitialViewController is flagged on the NowPlaying04 screen. But the AppDelegate decides if to go to it or rather switch to the NavigationController (with ID Start00), based on the isLoggedIn BOOL variable.
Thanks to @НаильГалиаскаров for idea of using different rootViewControllers.