Представьте себе следующее:
- У вас есть NSTableView с несколькими столбцами.
- Каждый NSTableColumn привязан к одному и тому же NSArrayController (назовем его
myArrayController
). - Этот контроллер массива содержит много экземпляров класса модели.
- В одном столбце есть NSPopupButtonCell, где
selectedObject
связан с myArrayController.arrangedObject.somePropertyOfTheModel
. - Таблица заполняется правильно.
Q : Как NSCell может определить путь ключа модели , с которым он связан?(somePropertyOfTheModel
в этом примере)
Я пытаюсь сделать ячейку многоразовой, не заставляя ее предполагать, что ее представленное значение всегда от somePropertyOfTheModel
(может быть от somethingElse
).После данного действия ему необходимо привязать content
второго контроллера к somePropertyOfTheModel
или somethingElse
.
[отредактировано] Немного более (может быть, слишком?) Объяснение: Я создаю всплывающую кнопку, которая отображает несколько предустановленных значений свойства, и элемент «Пользовательское значение», который вызывает всплывающее окно, позволяющее настроить свойство.Я хочу сделать так, чтобы я мог поместить эту ячейку в таблицу и заставить ее управлять PopOver так же, как он уже управляет своим собственным меню.
Что я пробовал:
[self representedObject]
возвращает фактическое значение.Установка значения content
для второго контроллера - это хорошо, но всякий раз, когда изменяется свойство модели, второй контроллер не уведомляется, поскольку он привязан к фактическому экземпляру значения ... не привязка ксвойство модели.
Запрос привязки ячейки ничего не дает:
[[self infoForBinding:@"selectedObject"] objectForKey:NSObservedObjectKey]; // nil returned
[[self infoForBinding:@"selectedObject"] objectForKey:NSObservedKeyPathKey]; // nil returned
Запрос привязки элемента управления ячейки (NSTableView) не 'я бы дал много:
[(NSTableView*)[self controlView] infoForBinding:@"content"] objectForKey:NSObservedObjectKey]; // returns myArrayController or a poxy to it.
[(NSTableView*)[self controlView] infoForBinding:@"content"] objectForKey:NSObservedKeyPathKey]; // returns @"arrangedObject"
// running the same but for @"selectedObject" returns nothing but nils
Я бы хотел запросить сам NSTableColumn - вот где привязки определены в IB - но ячейки не знают об их существовании(если я не упустил что-то очевидное).Даже при прохождении через NSTableView ни один метод не возвращает NSTableColumn для данной ячейки (и, учитывая клетки-прототипы, я сомневаюсь, что это поможет).