Обновление основных данных из пользовательского NSCell

У меня есть пользовательский NSCell (на самом деле подкласс NSTextFieldCell), который используется как в автономном редакторе, так и в NSTableColumn (привязанный к Core Data через NSArrayController). Когда пользователь изменяет значение, я вызываю -[NSCell setObjectValue:] для обновления значения (это NSNumber). Это работает в автономном редакторе, так как, когда это будет сделано, я вручную обновлю привязку к нему.

[self setObjectValue:[NSNumber numberWithInt:newValue]];

Этот шаг (обновление связанного поля) отсутствует, когда ячейка находится в NSTableView — обновленное значение отображается во время редактирования пользователем (с отслеживанием мыши), но как только это заканчивается, значение возвращается к сохраненному значению.

NSTableColumn привязан к ключу -[NSArrayController arrangedObjects]. Есть ли какой-то вызов «commitEditing» или «updateBinding», который мне не хватает? Я не смог найти никаких полезных функций в документации для NSCell или NSTableView.


person Dov    schedule 17.03.2011    source источник


Ответы (1)


Чтобы решить эту проблему, я реализовал -tableView:setObjectValue:forTableColumn:row: в своем подклассе NSArrayController. Я получаю экземпляр своего подкласса NSManagedObject из аргумента Row, а затем вручную назначаю новую модель из аргумента ObjectValue. Я до сих пор не знаю, зачем это нужно, когда текстовые ячейки делают это автоматически, но это работает.

person Dov    schedule 17.03.2011