2

У меня есть следующий рабочий процесс, определенный в моем iPhone раскадровки проекта:iPhone iOS Какой правильный способ реализовать логин/выход из системы с помощью раскадровки?

  • Войти-контроллер установлен как контроллер представления корня в раскадровке.
  • У входа есть отдельный рабочий процесс для входа и настройки учетной записи.
  • Обе рабочие процессы в конечном итоге модально представления вкладки с основным содержанием приложения
  • для последующих запусков приложения, я программно определить правильный контроллер для создания экземпляра в appDidFinishLaunching:
  • для последующего приложения использовать панель вкладок с основным содержанием является корнем (программно установлен)

Теперь я хотел бы реализовать процесс «выхода из системы» - кнопка стирает все пользовательские данные и возвращает пользователя на исходный экран входа/настройки учетной записи.

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

Как бы я идти о реализации логики Логин/выхода из системы, определенный выше?

Есть ли правильный способ полностью свернуть иерархию представлений, которая в настоящее время находится на экране, и заменить ее на другую?

Я имею в виду это:

[self.window setRootViewController:tabBarViewController]; 

Но я не уверен, если это будет правильно выгрузить все ресурсы, используемые в старом стеке RootViewController, что я расцепления.

+1

У меня есть аналогичные установки, сделанные несколько более сложный с помощью контроллера панели вкладок над меню выталкивания (гамбургер). Этот ответ сработал для меня чудесами: https://stackoverflow.com/questions/10273910/resetting-storyboard-on-logout По сути, это вопрос сохранения раскадровки, когда ваше приложение запускается и возвращается к началу раскадровки, когда необходимо. Это действительно неважно, где вы находитесь в своем приложении. – andyb

ответ

-1

Использование NSUserDefault для сохранения значения входа в систему, проверьте userdefault перед вызовом любой ViewController ... В SignOut удалить значение из Userdefaults или использовать этот код на SignOut

NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier]; 
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain]; 
+0

'NSUserDefault' небезопасен. Используйте SSKeyChain. – Dean