Где я должен реализовать вход в facebook в приложении на основе вкладок?

У меня есть приложение контроллера представления вкладок, которое потребует отображать контроллер представления входа в систему, когда пользователь выходит из системы - когда он открывает приложение в первый раз или после выхода из системы.

Какой подход лучше? где я должен поместить код, который проверяет сеанс и отображает контроллер представления входа в систему?

AppDeledate? одна из вкладок? Класс для контроллера панели вкладок?

Я ищу лучшие практики или рабочий пример такого поведения.

Спасибо!


person Doron Goldberg    schedule 08.05.2014    source источник
comment
Если вам нужно рабочее поведение, я могу помочь вам с кодом. Дайте мне знать.   -  person Balram Tiwari    schedule 08.05.2014
comment
Прилагаем обновленный Кодекс.   -  person Balram Tiwari    schedule 08.05.2014


Ответы (2)


Singelton дизайн - хороший подход. Для случая использования входа в систему вам действительно не обязательно иметь singelton. Вы все еще можете использовать Observer шаблон проектирования. Singleton действительно хорош при использовании CoreData или постоянного хранилища или многих операций, для которых требуется общий уникальный контроллер для всего приложения.

Вот как можно реализовать шаблон Observer.

  1. Создайте LoginViewController.
  2. В App Delegate добавьте метод наблюдателя, который постоянно ищет валидность сеанса и заботится о представлении LoginController.
  3. На viewDidLoad каждого элемента TabBarController выполните проверку действительности сеанса.
  4. Если сеанс недействителен, активируйте запуск уведомления, чтобы наблюдатель мог его прослушать и отреагировать соответствующим образом.

Это гораздо более простой подход. В сочетании с Singleton шаблон Observer обеспечивает надежный масштабируемый подход.

Обновленный код

----------------------------------------------- -----------

Найдите LoginObserver здесь

----------------------------------------------- -----------

Надеюсь, это поможет.

person Balram Tiwari    schedule 08.05.2014
comment
Спасибо за подробный ответ. Одна проблема, с которой я столкнулся: если сеанс мертв, я хочу показать контроллер представления входа в систему, что невозможно сделать из делегата приложения. Так что мне все равно нужно открывать его из каждого вида ... - person Doron Goldberg; 08.05.2014
comment
Нет нет нет. Шаблон наблюдателя существует только для этой цели. Вы просто отправляете уведомление об истечении срока действия сеанса. Реализация наблюдателя должна позаботиться о представлении контроллера входа в систему в зависимости от того, запускалось ли приложение в первый раз или уже было запущено. Похоже, я должен привести образец кода в поддержку своего ответа. Я отправлю его через 2 часа. - person Balram Tiwari; 08.05.2014
comment
@DoronGoldberg: Приложите обновленный Кодекс. - person Balram Tiwari; 08.05.2014

Лучший подход - использовать для этого концепцию singleton. Используйте класс singleton, определите общедоступный метод и вызовите его откуда угодно. Это показывает модульность вашего кодирования. Не путайте этот код с помощью viewcontroller или appDelegate (см. этот пост).

person Mani    schedule 08.05.2014