Динамически изменять методы получения и установки свойств в iOS - PullRequest
4 голосов
/ 01 апреля 2012

Я бы хотел привязать мои объявленные свойства к элементам управления и представлениям, которые создаются во время выполнения, почти так же, как это происходит при использовании файлов nib / xib.

Структура проекта следующая:

  • plist-файл: для настройки конфигурации вида (кнопок, меток, текстовых представлений и т. Д.)...)
  • SOViewController: класс, который должен наследоваться любым классом, который хочет использовать диспетчер компоновки .
  • SOView: очень простое представление, которое содержит словарь сгенерированных элементов управления, определенных в файле plist
  • SOLayoutManager: asingleton, ответственный за создание представления от имени подкласса SOViewController.

Всякий раз, когда пользовательский viewController наследует от SOViewController, из пакета загружается файл plist с конфигурацией представления.SOView создается, и все элементы управления добавляются в представление SOLayoutManager (и также доступны через словарь, являющийся частью представления).Пользовательский контроллер представления должен связывать свойства с элементами управления, сгенерированными из файла plist (элементы управления, которые являются частью экземпляра SOView).

Мой вопрос заключается в следующем: как связать метод получения и установкиметоды свойств, содержащихся в моем собственном контроллере представления с элементами управления, созданными в подклассе SOView?

1 Ответ

4 голосов
/ 01 апреля 2012

Точно так же, как xib'ы делают это ... call setValue:forKey:

Если у вас есть что-то вроде этого

@interface MyViewController : SOViewController

@property (nonatomic, strong) UIButton *myButton;

// ...

@end

, когда SOLayoutManager создает компоненты представления, оно увидит, еслиу него есть outlet и подключите его

MyViewController *viewController = // ...

// Create and configure the button
[viewController setValue:configuredButton forKey:@"myButton"];

Вам необходимо добавить название розетки в список, чтобы он знал, что установить на

...