Привязка данных в NSCollectionView - PullRequest
5 голосов
/ 07 февраля 2011

У меня есть NSCollectionView, для которого у меня есть dataArray и selectedIndexes NSIndexSet, определенные в его File's Owner.(Поскольку я работаю с MonoMac над этим проектом, у меня возникли некоторые проблемы при работе с простым NSArrayController, и поэтому я решил реализовать исходный код самостоятельно.) При инициализации моего контроллера я добавляю некоторые данные (NSMutableDictionary s) к dataArray.Когда приложение отображает окно, все данные, которые я только что добавил, хорошо отображаются.

Проблема в том, что изменения в источнике данных никак не влияют на интерфейс.Разве интерфейс не должен обновляться автоматически, когда я добавляю, изменяю или удаляю элемент из источника данных, так как я связывал значения, используя соответствующие ключи?

Я что-то упустил?Есть мысли по этому поводу?

Большое спасибо
–f

1 Ответ

2 голосов
/ 07 февраля 2011

При связывании со связью «многие-многие» вашего источника данных вы должны убедиться, что источник данных соответствует наблюдению значения ключа для этого свойства. Недостаточно иметь открытое свойство для изменяемой коллекции, такой как NSMutableArray.

При реализации источника данных вы должны использовать методы из протокола NSKeyValueObserving для объявления изменений, которые вы делаете (используя willChange:valuesAtIndexes:forKey: для отношений "многие-многие").

Если производительность менее важна, чем простая реализация, вы также можете использовать (неизменяемое) NSArray для свойства и всегда назначать новый массив при изменении данных. Таким образом, вы не получите приятную анимацию для добавленных или удаленных объектов.

...