О панели вкладок с использованием раскадровки

Я хочу создать приложение с использованием раскадровки с окном входа в систему и контроллером панели вкладок.

Таким образом, поток будет после нажатия кнопки входа в систему, приложение будет перенаправлено на контроллер панели вкладок с его представлениями.

Я сделал это: введите описание изображения здесь

Но обращаясь к документации Apple: UITabBarController

Поскольку класс UITabBarController наследуется от класса UIViewController, контроллеры панели вкладок имеют собственное представление, доступное через свойство представления. При развертывании интерфейса панели вкладок вы должны установить это представление как корень вашего окна. В отличие от других контроллеров представления, интерфейс панели вкладок никогда не должен устанавливаться как дочерний элемент другого контроллера представления.

Значит, мне не разрешено это делать?

Кроме того: три представления, на которые ссылается моя панель вкладок, затем у каждого из них снова есть собственное дочернее представление, но панель вкладок в дочернем представлении отсутствует. Что могло случиться? Я что-то упускаю?


person Rendy    schedule 13.11.2012    source источник


Ответы (2)


Что я сделал во всех своих приложениях, которые имеют аналогичную структуру, так это то, что первый контроллер представления проверил правильную аутентификацию и, если это не удалось, представить VC для входа. Для этого VC входа в систему определен делегат, который будет возвращать учетные данные пользователя после успешного входа в систему, а затем отклоняет модальный вход VC, который делает что-либо.

Вот пример макета: Layout

Протокол делегата выглядит так:

@protocol LoginViewControllerDelegate
    -(void)finishedLoadingUserInfo:(UserInfo *)curUser;
@end

Где UserInfo - это модель, которую я использую для информации о пользователе (в моем случае это NetworkID, FullName и т. Д.).

Когда пользователь успешно прошел аутентификацию, я запускаю этот метод делегата, который обрабатывается в классе, который его представил. Если вам нужны подробности, я могу помочь, но процесс прост.

person LJ Wilson    schedule 13.11.2012

Вы можете сначала запустить экран входа в систему из appDelegate, а затем настроить и запустить tabBarViewController после успешного входа в систему.

Альтернативный вариант заключается в выполнении следующих шагов: 1. настройте tabBarViewController, 2. отключите вкладки, 3. запустите ваш контроллер представления входа в систему модально, 4. включите вкладки tabViewController.

Любой из этих двух подходов должен работать.

person Sunny    schedule 13.11.2012