Я думаю, вам нужен service
, который обрабатывает процесс аутентификации (и его хранилище).
В этом сервисе вам понадобятся некоторые основные методы:
isAuthenticated()
login()
logout()
Этот сервис должен быть внедрен в ваши контроллеры каждого модуля:
service.isAuthenticated()
). если нет, перенаправьте на / login service.login()
Хороший и надежный пример такого поведения это проект angular-app и, в частности, его модуль безопасности , основанный на потрясающем модуле HTTP-аутентификации-перехватчике
Надеюсь, это поможет
]
Начиная с OS 3.0, в контроллер навигации встроена панель инструментов. Чтобы она отображалась:
[self.navigationController setToolbarHidden:NO];
Внедрив:
- (void)setToolbarItems:(NSArray *)toolbarItems animated:(BOOL)animated
в контроллер представления, вы можете настроить элементы панель инструментов.
Так что вам больше не нужно беспокоиться о том, где расположена панель инструментов в вашей иерархии.
(исправленная опечатка)
Все, что вам нужно, - это реализовать методы UITableViewDelegate и UITableViewDatasource, необходимые для требуемого вам уровня функциональности табличного представления. Эти методы могут быть в любом классе (ах), хотя указанные классы должны соответствовать соответствующим протоколам. Делегат и источник данных должны быть установлены в экземпляре UITableView - либо программно, либо с помощью Interface Builder. Согласно документам, вы потеряете некоторые функции - см. Обзорный раздел .
Лично я считаю, что многие разработчики одержимы предоставлением всей этой функциональности в одном монолитном класс контроллера представления, и, поскольку у них есть табличное представление в их представлении, необходимо использовать подкласс UITableViewController. Тем не мение, Мне нравится рассматривать Принцип единой ответственности , и я часто разбиваю источник данных и делегирую его на отдельные классы, когда сложность не является простой. Код также не привязан к конкретной реализации UIViewController.
В ситуациях, когда у меня есть отдельные классы источников данных / делегатов, я часто конструирую и подключаю их к табличному представлению с помощью Interface Builder, а не в коде. Этот подход (по крайней мере, для меня) соответствует духу внедрения зависимостей , избавляет от написания шаблонного кода и обеспечивает некоторый уровень развязки .
Эти варианты, конечно же, зависят от сложности функциональности, которую вы пытаетесь достичь - для простых реализаций я могу использовать UITableViewController.
Код также не привязан к конкретной реализации UIViewController.В ситуациях, когда у меня есть отдельные классы источников данных / делегатов, я часто конструирую и подключаю их к табличному представлению с помощью Interface Builder, а не в коде. Этот подход (по крайней мере, для меня) соответствует духу внедрения зависимостей , избавляет от написания шаблонного кода и обеспечивает некоторый уровень развязки .
Эти варианты, конечно же, зависят от сложности функциональности, которую вы пытаетесь достичь - для простых реализаций я могу использовать UITableViewController.
Код также не привязан к конкретной реализации UIViewController.В ситуациях, когда у меня есть отдельные классы источников данных / делегатов, я часто конструирую и подключаю их к табличному представлению с помощью Interface Builder, а не в коде. Этот подход (по крайней мере, для меня) соответствует духу внедрения зависимостей , избавляет от написания шаблонного кода и обеспечивает некоторый уровень развязки .
Эти варианты, конечно же, зависят от сложности функциональности, которую вы пытаетесь достичь - для простых реализаций я могу использовать UITableViewController.
Кори Флойд в основном прав, за исключением того, что
[self.navigationController setToolBarHidden:NO];
должно быть
[self.navigationController setToolbarHidden:NO];
То есть "b" в "setToolbarHidden" должно быть в нижнем регистре. Кроме того, имя метода, указанное в Справочнике по iPhone OS , на самом деле является
- (void)setToolbarHidden:(BOOL)hidden animated:(BOOL)animated
, хотя кажется, что пропуск параметра animated
тоже работает.