Нет принципиальной проблемы с выполнением segues в viewDidLoad (после вызова super).
Проблема заключается в выполнении segues до того, как окно приложения становится видимым.Контроллер UIViewController, который вы хотите отобразить, является частью основной раскадровки, поэтому он загружается в память до того, как приложение начинает выполнять свой код в делегате приложения.В вашем случае ViewDidLoad вызывается iOS до того, как окно вашего приложения получило сообщение: MakeKeyAndVisible.
Важной частью является видимость.Выполнение перехода к иерархии представления, в которой окно не видно, ничего не делает!
Вы можете попробовать сделать что-то вроде этого:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// The window initialized with hidden = YES, so in order to perform the segue we need to set this value to NO.
// After this action, the OS will add the window.rootViewController's view as a subview of the window.
self.window.hidden = NO;
[self.window.rootViewController performSegueWithIdentifier:_IDENTIFIER_ sender:self.window.rootViewController];
// Now that the window is not hidden, we must make it key.
[self.window makeKeyWindow];
return YES;
}