Настройка протоколов и жизненный цикл загрузки - PullRequest
0 голосов
/ 27 марта 2012

У меня есть набор протоколов, которые я использую на нескольких моих UIViewControllers. Есть ли способ установить код по умолчанию, который запускается на всех из них, когда установлен протокол. Также есть ли способ заставить их работать как жизненный цикл UIViewController, например, когда UIViewController загружает это?

 - (void)viewWillLoad;
 - (void(viewDidLoad;
 - (void)viewWillAppear:(BOOL)animated;
 - (void)viewDidAppear:(BOOL)anmated;

1 Ответ

1 голос
/ 27 марта 2012

Чтобы заставить код работать при установленном свойстве (я полагаю, вы это имели в виду?), Вы можете просто переопределить метод синтезированного сеттера

@synthesize value = _value;

- (void)setMyProperty:(id <MyProtocol>)value {
    if (value != value) {
        _value = value;

        // Insert your code here
        ...
    }
}

Если вы хотите, чтобы все ваши контроллеры представления вели себя одинаковоТаким образом, вы можете предоставить общий подкласс UIViewController, т.е.

@interface AbstractViewController : UIViewController {
...
}

, а затем все ваши «настоящие» контроллеры представления будут наследоваться от этого, а не напрямую от UIViewController:

@interface MainViewController : AbstractViewController { ... }

@interface DetailsViewController : AbstractViewController { ... }

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

Надеюсь, это полезно.Если это не так, добавьте больше информации в свой вопрос, и мы можем попробовать еще раз:)

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