Я пишу приложение, в котором вам нужно отображать экран входа в систему модально, а в приложении есть панель вкладок.
Я добавил панель вкладок прямо в UIWindow. Чтобы переключить его в новое представление (представление входа в систему), я переопределил applicationDidFinishLaunching, где я проверяю, есть ли у пользователя учетные данные для входа, в противном случае я не показываю экран входа в систему (при условии первого использования или выхода из системы) я модально представляю экран входа в систему. Я дал возможность выйти из системы на вкладке настроек внутри приложения.
Я использую вызов [[UIApplication sharedApplication] delegate], чтобы получить экземпляр делегата приложения, когда пользователь входит в систему в первый раз. Таким образом я получаю доступ к tabBarController, который является частью делегата приложения (как и в большинстве случаев). Однако, когда я пытаюсь вызвать свой loginViewController из параметра выхода в настройках (где-то в будущем жизненном цикле), тот же вызов [[UIApplication sharedApplication] delegate] возвращает мне делегат, для которого я не могу использовать ни один из методов, которые я использую. определили. Это дает мне ошибку «неопознанный селектор отправлен в экземпляр» во время выполнения.
Мне нужно понять, что именно возвращает делегат вызова [[UIApplication sharedApplication] delegate]? Изменяется ли объект делегата, который он возвращает, за период жизненного цикла приложения? ИЛИ это одиночный экземпляр на протяжении всего жизненного цикла приложения?
И, во-вторых, чтобы решить эту проблему, следует ли мне добавить tabBar в представление (содержащееся в главном окне) вместо того, чтобы добавлять его непосредственно в UIWindow (как это сделано в шаблоне для приложения Tab Bar и, по-видимому, является стандартной практикой). Есть ли какие-либо известные проблемы с этим подходом ИЛИ это нормально. Кто-нибудь пробовал это? Пожалуйста, дай мне знать.
Спасибо, Дев.