したがって、AppDelegate.m を使用して、この問題の解決策を見つけた可能性があります。ストーリーボードを使用している場合は、StoryboardID を使用してそれらを参照しているため、ViewController クラスを AppDelegate.h にインポートする必要はありません。次のようになります。
- (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;
}
明らかに、InterfaceBuilder/Storyboard プロパティを使用して、View Controller に識別子を設定する必要があります。BOOL 変数 userLoggedIn に別の値を設定すると、アプリは相対的な rootViewController で読み込まれます。
ストーリーボードは次のようになります。

これははるかに組織化されています。NowPlaying04 画面で isInitialViewController にフラグが立てられます。しかし、AppDelegate は、isLoggedIn BOOL 変数に基づいて、それに移動するか、NavigationController (ID Start00 を持つ) に切り替えるかを決定します。
さまざまな rootViewControllers を使用するアイデアについて、@НаильГалиаскаров に感謝します。