Обновление базовых данных из пользовательского NSCell - PullRequest
1 голос
/ 17 марта 2011

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

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

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

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

1 Ответ

1 голос
/ 17 марта 2011

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

...