Привязка путей индекса выбора NSOutlineView - PullRequest
3 голосов
/ 03 сентября 2011

У меня есть пользовательский <NSOutlineViewDataSource>, для которого я бы NSOutlineView обновил свойство selectionIndexPaths.Я не могу заставить bind:toObject:withKeyPath:options: правильно связываться.По сути, мне нужно, чтобы мой источник данных знал, какой элемент выбран.

Когда я связываюсь с selectionIndexes (объявленным NSTableView) или selectionIndexPaths (объявленнымNSOutlineView), что в документации указано, что я должен быть в состоянии (если по какой-то причине это доступно только в IB), я получаю исключение во время выполнения, что схематическое представление не является "совместимым с кодированием значения ключа" ни для одного из этих ключей.

Когда я связываюсь с selectedRowIndexes (запасной вариант, поскольку мне нужно было бы затем взять эту информацию и перепроектировать ее, чтобы выяснить, какая пара родитель / потомок выбрана), онаобновляет источник данных один раз, с NSIndexSet в источнике данных, замороженном до его начального значения.Я тоже не устанавливаю это вручную.Кроме того, я даже не могу связать selectedRowIndexes в другом направлении, поэтому источник данных может обновлять выбор вида структуры.Я получаю то же исключение «совместимое с кодированием значения ключа» в представлении структуры.

У меня есть @property, определенный в моем классе источника данных, с резервным ivar, и я связываю его с контроллеромкласс со ссылками на источник данных и представление структуры после загрузки данных в -awakeFromNib.

Ответы [ 2 ]

2 голосов
/ 04 сентября 2011

Дов, вы рассматривали возможность использования NSTreeController, который приспособлен для привязок?В качестве альтернативы, вы можете установить свой контроллер в качестве делегата представления структуры для получения уведомления о выборе с помощью метода "-outlineViewSelectionDidChange"

Источник

1 голос
/ 19 декабря 2011

Вместо привязки selectionIndexPaths, которая действовала ненадежно, я вместо этого использовал делегата моего контурного вида для обновления выделения в модели в уведомлениях -outlineViewSelectionIsChanging: и -outlineViewSelectionDidChange:.

...