Я создаю приложение для iOS, используя раскадровку. Корневым контроллером представления является контроллер панели вкладок. Я создаю процесс входа / выхода, и он в основном работает нормально, но у меня есть несколько проблем. Мне нужно знать ЛУЧШИЙ способ настроить все это.
Я хочу сделать следующее:
- Показать экран входа в систему при первом запуске приложения. Когда они войдут, перейдите на первую вкладку контроллера панели вкладок.
- Каждый раз, когда они запускают приложение после этого, проверьте, вошли ли они в систему, и сразу перейдите к первой вкладке корневого контроллера панели вкладок.
- Когда они вручную нажимают кнопку выхода из системы, показывают экран входа в систему и очищают все данные от контроллеров представления.
До сих пор я устанавливал корневой контроллер представления на контроллер панели вкладок и создавал собственный переход к моему контроллеру представления входа в систему. Внутри моего класса Tab Bar Controller я проверяю, вошли ли они внутрь viewDidAppear
метода, и выполняю следующую последовательность действий:[self performSegueWithIdentifier:@"pushLogin" sender:self];
Я также настраиваю уведомление о том, когда необходимо выполнить действие выхода из системы: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(logoutAccount) name:@"logoutAccount" object:nil];
После выхода из системы я очищаю учетные данные из цепочки для ключей, запускаю [self setSelectedIndex:0]
и выполняю процедуру, чтобы снова показать контроллер вида входа в систему.
Все это прекрасно работает, но мне интересно: должна ли эта логика быть в AppDelegate?У меня также есть две проблемы:
- Первый раз, когда они запускают приложение , контроллер панели вкладок кратко показывает перед выполнением перехода. Я пытался переместить код в,
viewWillAppear
но переход не будет работать так рано. - Когда они выходят из системы, все данные все еще находятся внутри всех контроллеров представления. Если они входят в новую учетную запись, данные старой учетной записи все еще отображаются, пока они не обновятся.Мне нужен способ, чтобы очистить это легко при выходе из системы.
Я открыт для переделки этого. Я подумал о том, чтобы сделать экран входа в систему корневым контроллером представления или создать контроллер навигации в AppDelegate для обработки всего ... Я просто не уверен, какой метод на данный момент лучший.