Обновление основных данных из пользовательского NSCELL
-
27-10-2019 - |
Вопрос
У меня есть обычай NSCell
(На самом деле подкласс NSTextFieldCell
), который используется как в отдельном редакторе, так и в NSTableColumn
(связано с основными данными через NSArrayController
) Когда пользователь меняет значение, я звоню -[NSCell setObjectValue:]
обновить значение (это NSNumber
) Это работает в отдельном редакторе, так как, когда это сделано вручную, обновляю привязку.
[self setObjectValue:[NSNumber numberWithInt:newValue]];
Этот шаг (обновление связанного поля) отсутствует, когда ячейка находится в NSTableView
- Обновленное значение отображается во время редактирования пользователя (с отслеживанием мышей), но как только это закончится, значение отрывается до сохраняемого значения.
А NSTableColumn
связан с ключом -[NSArrayController arrangedObjects]
. Анкет Есть ли какой -то звонок, чтобы «коммировать» или «подключение обновлений», который мне не хватает? Я не мог найти никаких полезных функций в документах для NSCell
или же NSTableView
.
Решение
Чтобы решить это, я реализовал -tableView:setObjectValue:forTableColumn:row:
в моем NSArrayController
подкласс. Я получаю экземпляр моего NSManagedObject
Подкласс из аргумента строки, а затем вручную назначьте новую модель из аргумента ObjectValue. Я до сих пор не знаю, почему это необходимо, когда текстовые ячейки делают это автоматически, но это работает.