iPhone DropBox App Like реализация - перелистывание панели вкладок, чтобы открыть экран входа - PullRequest
0 голосов
/ 16 августа 2010

Я пишу приложение, в котором нужно модально отображать экран входа в систему, а в приложении есть панель вкладок.

Я добавил панель вкладок непосредственно в окно UIWindow.Чтобы перевернуть его в новое представление (представление входа в систему), я переопределил applicationDidFinishLaunching, где я проверяю, есть ли у пользователя учетные данные для входа в систему, тогда я не отображаю экран входа в систему в противном случае (при условии первого использования или выхода из системы), я модально представляю экран входа в систему.Я дал возможность выхода из системы на вкладке настроек внутри приложения.

Я использую вызов [[UIApplication sharedApplication] делегат], чтобы получить экземпляр делегата приложения при первом входе пользователя в систему.Таким образом, я получаю доступ к tabBarController, который является частью Application Delegate (как это обычно бывает).Однако, когда я пытаюсь вызвать свой loginViewController из опции выхода из системы в настройках (где-то в будущем жизненном цикле), тот же вызов [[UIApplication sharedApplication] делегат] возвращает мне делегата, для которого я не могу использовать ни один из методов, которые яопределили.Это дает мне ошибку «нераспознанный селектор, отправленный экземпляру» во время выполнения.

Мне нужно понять, что именно возвращает вызов [[UIApplication sharedApplication] делегат]?Изменяется ли объект делегата, который он возвращает, в течение периода жизненного цикла приложения?ИЛИ это единственный экземпляр в течение жизненного цикла приложения?

И во-вторых, чтобы решить эту проблему, я должен добавить tabBar к представлению (содержится в главном окне) вместо того, чтобы добавлять его непосредственно в UIWindow (как это было сделано)по шаблону для приложения Tab Bar и, кажется, стандартная практика).Есть ли известные проблемы с этим подходом ИЛИ это нормально.Кто-нибудь пробовал это?Пожалуйста, дайте мне знать.

Спасибо Dev.

1 Ответ

1 голос
/ 16 августа 2010

Похоже, ваш класс, который получает экземпляр вашего одноэлементного делегата, не знает, что он реализует.убедитесь, что вы #import передаете свой делегат классу, который использует его как [[UIApplication sharedApplication] delegate].Кроме того, если вы получаете предупреждение о несоответствии UIApplication или чего-либо еще, вы можете привести его к типу AppDelegate, чтобы избежать его.

Чтобы ответить на ваш вопрос о том, что возвращает этот вызов, он является единичным на протяжении всего жизненного циклаприложение.

Чтобы ответить на 2-й вопрос, иметь его в UIWindow (и, следовательно, в appdelegate) хорошо, и, вероятно, его поощряют, поскольку он является корневым контроллером вашего приложения (судя по всему)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...