Я создаю приложение с разными состояниями, которое необходимо восстановить, если пользователь почему-то ушел из приложения. Это означает, что при запуске приложения разные экраны/диспетчер просмотра должны находиться поверх стека навигации. Для достижения этой цели, я пытался построить viewcontrollers программно, смотрите ниже:iOS ViewController не появляется, хотя viewDidLoad вызывается
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
switch (appState)
{
case CSAppStateIdle:
{
//replace and push rootview manually
MainVC* mainView = [storyboard instantiateViewControllerWithIdentifier:@"MainVC"];
[(UINavigationController *)self.window.rootViewController pushViewController:mainView animated:YES];
}
break;
case CSAppStateSomeState:
{
MainVC* mainView = [storyboard instantiateViewControllerWithIdentifier:@"MainVC"];
SomeVC* someView = [storyboard instantiateViewControllerWithIdentifier:@"SomeVC"];
[(UINavigationController *)self.window.rootViewController addChildViewController:mainView];
[(UINavigationController *)self.window.rootViewController pushViewController:someView animated:YES];
}
break;
default:
break;
}
Я использую stroyboards с ID-S установлен правильно. Ну в CSAppStateIdle это работает, но в CSAppStateSomeState someView не появляется на экране, но в someVC viewDidLoad вызывается viewWillAppear и даже viewDidAppear.
Неужели кто-нибудь сталкивался с этим раньше или знает решение? Я ценю любую помощь, спасибо!
Что вы пытаетесь достичь с помощью вызова метода 'addChildViewController'? – pbasdf
Я попытался создать навигационный стек, поэтому, когда пользователь нажимает кнопку «Назад» из someView и вызывается popViewController, появляется mainView. – UNIQL