Что означает «Ключ контроллера» в Интерфейсном Разработчике> Инспектор> Привязки? - PullRequest
5 голосов
/ 27 февраля 2009

Я не могу найти в Документах, где они объясняют все эти поля и что они значат. Особенно "Ключ контроллера" мне не понятен.

Ответы [ 4 ]

4 голосов
/ 14 марта 2010

[Копирование мой ответ на другой вопрос …]

Ключ контроллера - это ключ для (свойства объекта контроллера), к которому вы привязываетесь. Путь ключа модели - это путь ключа, по которому связанный объект может запрашивать объекты модели для более базовых объектов, таких как строки или изображения, или для других объектов модели (т. Е. Углубляться в модель).

Пример. Допустим, у вас есть объекты Person в контроллере массива, и у каждого Person есть name. Вы связываете столбец таблицы с контроллером массива, ключом контроллера arrangedObjects (получая таким образом объекты модели), путь ключа модели name (таким образом получая объекты значений).

Более сложный пример. Предположим, у вас есть контроллер массива Департаментов. В каждом отделе есть Персоны (сотрудники отдела). Вы можете привязать контроллер массива People к контроллеру Departments, ключ контроллера arrangedObjects (получение объектов модели Department), путь ключа модели @distinctUnionOfObjects.employees (получение объектов модели Person), а затем привязать столбец таблицы к контроллеру People, ключ контроллера arrangedObjects, путь ключа модели name.

Этот стол будет для людей, которые работают на вашу компанию; если у вас есть отдельная таблица предполагаемых сотрудников, вы также можете создавать для них объекты Person, и они не будут отображаться в таблице существующих сотрудников, потому что они не находятся в отделе. Когда вы нанимаете их, вы добавляете их в один или несколько отделов; затем они будут автоматически отображаться в контроллере массива People, поскольку этот контроллер массива наблюдает за employees всех отделов.

4 голосов
/ 04 марта 2009

Всплывающее меню «Ключ контроллера» - это способ помочь вам определить, какие ключи представляет контроллер (обычно NSArrayController, NSObjectController или NSTreeController).

Лучшим примером является ключ selection NSArrayControllers, который содержит набор выбранных объектов. Что сбивает с толку, так это то, что NSObjectController также представляет клавишу выбора, хотя контроллер может управлять только одним объектом (следовательно, выбор = объект).

Я согласен, что это не совсем понятно. Я лично начал понимать это, когда я программно связывал свои объекты (то есть, используя метод bind:toObject:withKeyPath:options:).

1 голос
/ 27 февраля 2009

Это связано с кодированием значения ключа. Вы можете привязать элемент управления в IB к значению в вашем контроллере. Чтобы связать это значение, вам нужно указать путь к нему. Например, если у вас есть текстовое поле в IB и вы хотите связать его с полем с именем «name» в вашем контроллере, вы должны указать «name» в качестве ключевого пути. Затем вам нужно настроить поле вашего имени в контроллере так, чтобы оно было доступно через кодирование значения ключа. Это делается в 10.5 с помощью спецификаторов @property и @synthesize.

0 голосов
/ 14 марта 2010

Взгляните на эту тему: Привязки значений ключа какао: каковы объяснения различных вариантов ключа контроллера?

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

...