我有一个自定义NSCell
(实际上是子类NSTextFieldCell
),它在独立编辑器和NSTableColumn
中使用(通过NSArrayController
绑定到核心数据)。当用户更改值时,我调用-[NSCell setObjectValue:]
来更新值(它是NSNumber
)。这在独立编辑器中有效,因为当它完成时我手动更新它上面的绑定。
[self setObjectValue:[NSNumber numberWithInt:newValue]];
当单元格位于NSTableView
时,缺少该步骤(更新绑定字段) - 在用户编辑时(使用鼠标跟踪)显示更新后的值,但是一旦结束,值就会快照回到持久的价值。
NSTableColumn
绑定到-[NSArrayController arrangedObjects]
的键。是否存在某种我对“遗嘱”或“updateBinding”的调用?我在NSCell
或NSTableView
的文档中找不到任何有用的功能。
答案 0 :(得分:1)
为了解决这个问题,我在-tableView:setObjectValue:forTableColumn:row:
子类中实现了NSArrayController
。我从Row参数中获取了我的NSManagedObject
子类的实例,然后从ObjectValue参数手动分配新模型。当文本单元格自动执行此操作时,我仍然不知道为什么这是必要的,但它可以正常工作。