Как заставить UITableView наследовать пользовательский подкласс UIViewController? - PullRequest
0 голосов
/ 11 июня 2011

Я новичок в разработке iOS. У меня есть два представления таблицы и подробное представление содержимого примерно так:

PopularContentViewController : UITableViewController
LatestContentViewController : UITableViewController
ContentDetailViewController : UIViewController

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

Я думал создать свой собственный подкласс UIViewController (скажем, AuthenticatedViewController) и заставить другие мои контроллеры наследовать его. Проблема в том, как мне сделать что-то вроде этого:

PopularContentViewController : UITableViewController : AuthenticatedViewController
LatestContentViewController : UITableViewController : AuthenticatedViewController
ContentDetailViewController : AuthenticatedViewController

Я нашел этот похожий вопрос: Могу ли я создать UITableViewController, который наследует от пользовательского подкласса UIViewController?

... но мне интересно, есть ли другой способ сделать это, кроме наследования или создания собственного UITableViewController, который расширяет мой AuthenticatedTableViewController? Может быть, через протоколы или с помощью делегата вместо? Просто ищу толчок в правильном направлении.

Ответы [ 2 ]

1 голос
/ 11 июня 2011

Uitableviewcontrollers - это UIViewController.Но вы идете об этом неправильно.Создайте корневой контроллер вида для аутентификации, возможно, поместите его в контроллер навигации.Затем один пользователь проходит проверку подлинности, поместите один из ваших контроллеров таблиц в стек (или полностью замените оригинальный контроллер во время выполнения и сохраните его учетные данные)....

Или, если вы настаиваете, используйте категории или одиночный код только для того, чтобы иметь дело с компонентами аутентификации (не используйте пользовательский интерфейс, если это возможно).Я бы пошел по пути одного контроллера представления на задание (в контейнере контроллера навигации) ... Упростите, человек, упростите.

1 голос
/ 11 июня 2011

В target-c вы можете наследовать только от одного суперкласса. Нет возможности наследовать несколько классов. Вы можете попробовать другой подход, например сохранить свой AuthenticatedViewController в appDelegate, и вы можете получить к нему доступ из любого класса, потому что appDelegate является одноэлементным классом. Таким образом, вы можете достичь желаемой функциональности.

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