Должен ли IBOutlet использоваться только для элементов интерфейса? - PullRequest
0 голосов
/ 10 сентября 2010

Основной вопрос здесь о структуре базового приложения iOS MVC.

Я знаю, что IBOutlets используются для доступа к элементам представления, таким как кнопки и метки, а также для изменения или получения их значений.

Нормально ли использовать IBOutlet для доступа к другому объекту в вашем приложении из представления ??

Например ..

@interface CustomView : UIView {
    IBOutlet Person *person;
}

Должны ли мы использовать выход для человека(Модель), чтобы представление отображало информацию о человеке?

Или представление должно просто создавать экземпляр объекта Person напрямую, без использования IBOutlets и Interface Builder.

Спасибо за разъяснения.

* По какой-то причине учебник, которому я следую, поместил класс Model в перо.

Ответы [ 2 ]

3 голосов
/ 10 сентября 2010

IBOutlet - это не более чем аннотация, сообщающая Интерфейсному Разработчику, какие свойства и / или переменные экземпляра данного класса должны быть видны (и, следовательно, доступны для подключения) в IB. Как правило, вам необходимо подключить один или несколько подклассов UIViewController к экземплярам представления в данном файле пера, но в соответствии с шаблоном проектирования Model-View-Controller вам следует избегать подключения объектов View напрямую к объектам модели.

Apple имеет обзор этого шаблона проектирования в iOS Tutorial . Вам также следует прочитать Руководство по взаимодействию с персоналом , разработанное Apple, - оно действительно поможет вам разобраться во многих подобных проблемах.

2 голосов
/ 10 сентября 2010

Вам не нужно использовать IBOutlet, если вы не хотите привязать объект из кончика к этой переменной в Интерфейсном Разработчике. Компилятор игнорирует IBOutlet «ключевое слово» (на самом деле это не ключевое слово, а пустой макрос препроцессора), он просто сообщает конструктору интерфейса, что его можно подключить к объекту, созданному в кончике.

Если вам нужен Person объект в кончике, создайте его в Интерфейсном Разработчике и подключите к розетке. Если вам не нужен доступ к нему из пера, вы можете также создать его в коде, а не использовать его как выход.

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