2009-02-27 4 views
2

Apple, говорит:В чем смысл свойства «Controller Key» в IB на панели Inspector> Bindings?

атрибут объекта NSController. При привязке к объекту NSController вы используете это поле для выбора первой записи в ключевом пути. Меню, связанное с этим полем, отображает свойства, доступные на выбранном объекте контроллера, в качестве удобства. Вы можете ввести имя свойства или просто выбрать его из предоставленного списка.

Может кто-нибудь объяснить это другими словами?

+0

Дубликат http://stackoverflow.com/questions/595257/ –

ответ

2

Вы привязываете объект вида к свойству модели. Нечто подобное (схематично):

myTextField.value <=> myModel.textValue. 

В то время как вы можете связать свойство вида непосредственно к свойству вашей модели объекта, как показано выше, вы действительно не должны. Вы пропустили бы приятные функции, предоставляемые контроллерами Apple (например, NSObjectController, NSArrayController и т. Д.). Вместо этого вы должны связать свой взгляд на контроллер, который привязан к модели, как:

myTextField.value <=> myObjectController.selection.textValue 
    and 
myObjectController.contentObject <=> myModel 

В этой установке myObjectController.selection является Key-Value связывании совместимый прокси-сервер для myObjectController.contentObject и myObjectController может выступать в качестве посредник между представлением и моделью. Интерфейс Builder делает это разделение проблем явным, потому что контроллеры могут выставлять несколько прокси для своей связанной модели (например, NSArrayControllerarrangedObjects и selectedObjects). При привязке myTextField.value в приведенном выше примере вы должны ввести «выбор» в поле «Controller Key» и «textValue» в поле пути «Путь к объекту« Model Object Keypath ».

+0

В чем разница: ничего в 'Controller Key' и' selection.textValue' в 'Key Key Path '? Плюс: с помощью 'View Controller' поле' Controller Key' всегда отключено. Зачем ? Спасибо – Colas