Как загрузить нужный viewController в iOS?
В случае со storyboard я делаю следующим образом:
- в Deployment Info нужного таргета убираю Main Interface;
- добавляю в метод application:didFinishLaunchingWithOptions:  AppDelegate следующий код- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"YourStoryboardName" bundle:nil];
   
    UIViewController *firstViewControllerToShow = nil;
    
    if (yourCondition) {
        firstViewControllerToShow =
            [storyboard instantiateInitialViewController];
    } else {
        firstViewControllerToShow =
            [storyboard instantiateViewControllerWithIdentifier:@"YourAlternativeSceneStoryboardID"];
    }
    
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = firstViewControllerToShow;
    [self.window makeKeyAndVisible];
    
    return YES;
}
где yourCondition - условие в зависимости от которого надо показать тот или иной ViewController, например - зарегистрирован пользователь или нет. Если зарегистрирован, то будет показан ViewController,  который указан как Initial в storyboard. Если нет - ViewController с идентификатором YourAlternativeSceneStoryboardID.
Собственно, без storyboard все тоже самое, но без storyboard. :)
Используете сториборду или нет?