2014-12-17 1 views
2

Проблема очень проста. Мое приложение имеет зарегистрированное представление (фактически более одного) и вид входа в систему, при входе в систему регистрируется Show Detail segue.Вход/просмотр в режиме просмотра и segues: какой правильный рабочий процесс принять?

На мой взгляд, я думал просто позвонить popToViewController, но затем я помню, что мое приложение сохранит его состояние входа, поэтому я могу быть в случае, когда пользователь выходит из системы, и есть только зарегистрированное представление, созданное в приложении и ничего не поп.

Теперь у меня есть еще Show segue от зарегистрированного вида до входа в систему. Но мне интересно, правильно ли это сделать.

Каков правильный процесс принятия?

+1

Лично мне нравится поддерживать 2 разных раскадровки для контроллеров просмотра, связанных с подключением, и зарегистрированных контроллеров. В 'applicationDidFinishLaunchingWithOptions:', проверьте, вошел ли пользователь в систему. Затем используйте 'instantiateViewController:' в раскадровке по вашему выбору и установите «rootViewController» вашего окна приложения с этим экземпляром. Это так просто. Предположим, что у вас есть механизм для проверки состояния входа в систему. – n00bProgrammer

ответ

1

Я согласен с тем, что @ n00bProgrammer упомянул в комментариях. Я считаю хорошей практикой поддерживать Login и интерфейс Main (назовите их, что вы хотите) отдельно.

Вы можете сделать это, изменив свойство rootViewController на основной объект приложения UIWindow. Вы можете получить доступ к этому через свойство window вашего AppDelegate.

Код для назначения нового rootViewController для приложения может выглядеть следующим образом:

// Change the root view controller of the application window to the main storyboard 
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil]; 
UITabBarController *mainTabBarController = [mainStoryboard instantiateViewControllerWithIdentifier:@"MainTabBarController"]; 

UIWindow *mainApplicationWindow = [[[UIApplication sharedApplication] delegate] window]; 
mainApplicationWindow.rootViewController = mainTabBarController; 

Всякий раз, когда пользователь получает вход, вы можете изменить rootViewController на тот, который вы показали на входе:

// Switch back to the login view 
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Login" bundle: nil]; 
UINavigationController *rootNavigationController = [mainStoryboard instantiateViewControllerWithIdentifier:@"RootNavigationController"]; 

UIWindow *mainApplicationWindow = [[[UIApplication sharedApplication] delegate] window]; 
mainApplicationWindow.rootViewController = rootNavigationController; 
Смежные вопросы