У меня есть очень аналогичный вариант использования в моем приложении - для аутентификации требуется пароль. После многих испытаний и доработок я обнаружил, что наилучшим подходом является следующий дизайн:
Не используйте класс A для запуска ваших учетных данных VC - используйте вместо этого делегат приложения.
В целях безопасности, как правило, вы хотите, чтобы VC учетных данных отображался до того, как пользователь сможет просмотреть базовое представление. Гораздо проще справиться с этим в делегате приложения, чем в VC. Кроме того, вам необходимо учитывать, что происходит, когда ваше приложение имеет фоновый режим - снимок экрана с текущим состоянием приложения. Если вы используете viewController A для отображения представления учетных данных, когда приложение перезапустится, пользователь сможет увидеть любую конфиденциальную информацию, которая была видна в приложении, близко, пока приложение не завершит запуск, и VC A представит VC учетных данных.
Не вставляйте ваше представление учетных данных в существующий ViewController - используйте вместо него новый UIWindow
.
Вы никогда не хотите, чтобы какое-либо другое представление могло располагаться поверх вашего представления учетных данных. Когда-либо. Даже представления, которые обычно всегда будут сверху, как UIAlertView
. Самый простой способ добиться этого - использовать специальный UIWindow
только для просмотра учетных данных. Показать это окно и скрыть главное окно приложения всякий раз, когда вам нужно отобразить представление учетных данных.
Как этот подход выглядит на практике?
Если вас вообще интересует, как хорошо работает этот дизайн, вы можете проверить функцию пароля в Audiotorium Notes для iPad. Я провел много времени с этим дизайном, чтобы убедиться, что он был максимально безопасным.
Если у вас есть какие-то конкретные квесты по реализации, не стесняйтесь спрашивать, и я постараюсь на них ответить.