Могу ли я использовать один и тот же метод, передавая разные подклассы UIViewController? - PullRequest
1 голос
/ 08 марта 2011

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

Я отправляю ссылку на мой подкласс UIViewController в метод запроса службы (queryServiceWithParent) в качестве параметра метода.

Затем я сохраняю подкласс UIViewController в свойстве, чтобы потом использовать его в классе.

NeighbourhoodData.h:

NeighbourhoodDetailTableViewController *viewController;

NeighbourhoodData.m:

- (void)queryServiceWithParent:(UIViewController *)controller {

    viewController = (NeighbourhoodDetailTableViewController *)controller;

}

Моя проблема в том, что теперь я хотел бы использовать этот класс из другого представления с другим подклассом UIViewController.

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

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

Ответы [ 2 ]

1 голос
/ 08 марта 2011

Вы можете спросить id, что это за класс.Что-то вроде этого может работать:

- (void)doStuffWithMyViewController:(UIViewController *)controller
{
    if ([controller isKindOfClass:[FirstViewControllerSubclass class]])
    {
        //The controller is a FirstViewControllerSubclass or a subclass of FirstViewControllerSubclass
    }

    if ([controller isKindOfClass:[SecondViewControllerSubclass class]])
    {
        //The controller is a SecondViewControllerSubclass or a subclass of SecondViewControllerSubclass
    }
}

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

Еще одна вещь, которую стоит рассмотреть, - это создать общий суперкласс длядва контроллера вида, если между ними есть общие функции

0 голосов
/ 08 марта 2011

Либо вы создаете метод класса для доступа других классов, либо вам придется научиться настраивать делегирование, чтобы сделать ваш текущий класс делегатом для других классов.

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