(Аннотация: привязки работать в коде, но не в IB)Связывание с representedObject NSViewController в
У меня есть окно, управляемое NSWindowController. Слева от окна находится представление источника. Справа находится табличный вид, показывающий элементы текущего выбранного источника.
Я установил NSTreeController в своем окне XIB. Я хочу, чтобы его содержимое использовалось для представления источника. Выбор будет вести табличный вид.
Я пытаюсь разделить это с помощью NSViewControllers. Один контроллер просмотра загружает NIB, содержащий представление источника. Другой контроллер просмотра загрузит представление таблицы.
Учитывая, что мне нужен доступ к NSTreeController в контроллере представления исходного кода, я установил его как представляемый объект контроллера представления. (На самом деле для этой установки, которая должна быть выполнена к моменту пробуждения, FromNib вызывается на контроллере представления, я превратил представленный объект в IBOutlet).
Все отлично работает, когда я подключить мой источник просмотра в коде:
[outlineView bind:@"content"
toObject:sources
withKeyPath:@"arrangedObjects"
options:nil];
[outlineView bind:@"selectionIndexPaths"
toObject:sources
withKeyPath:@"selectionIndexPaths"
options:nil];
[[outlineView tableColumnWithIdentifier:@"Title"] bind:@"value"
toObject:sources
withKeyPath:@"arrangedObjects.title"
options:nil];
Однако я не в состоянии воспроизвести это с помощью Interface Builder. Дело в том, что текстовое поле «контроллер ключа» выделено серым цветом. Таким образом, я связываю «значение» столбца с владельцем файла, используя модель keyPath из «presentObject.arrangedObjects.title». Это не показывает желаемого поведения. На самом деле выбрано исключение: -[NSProxy doesNotRecognizeSelector:_mutatingNodes] called!
Как использовать представленный объект в IB? Могу ли я создать контроллер в IB, который действует как прокси-объект для представленного объекта? Могу ли я настроить древовидный контроллер в представлении исходного кода XIB, который во время загрузки NIB поменяется для представленного объекта?