Actualización de datos principales de NSCell personalizado
-
27-10-2019 - |
Pregunta
Tengo una costumbre NSCell
(en realidad subclase NSTextFieldCell
), que se usa tanto en un editor independiente como en un NSTableColumn
(ligado a los datos del núcleo a través de NSArrayController
). Cuando el usuario cambia el valor, llamo -[NSCell setObjectValue:]
para actualizar el valor (es un NSNumber
). Esto funciona en el editor independiente, ya que cuando está hecho, actualizo manualmente el vinculante.
[self setObjectValue:[NSNumber numberWithInt:newValue]];
Falta ese paso (actualización del campo unido) cuando la celda está en un NSTableView
- El valor actualizado aparece mientras la edición del usuario (con seguimiento del mouse), pero tan pronto como termina, el valor vuelve al valor persistido.
los NSTableColumn
está vinculado a una clave de -[NSArrayController arrangedObjects]
. ¿Hay algún tipo de llamada a "Comprometer" o "Actualizar" que me estoy perdiendo? No pude encontrar ninguna función útil en los documentos para NSCell
o NSTableView
.
Solución
Para resolver esto, implementé -tableView:setObjectValue:forTableColumn:row:
en mi NSArrayController
subclase. Tengo la instancia de mi NSManagedObject
Subclase del argumento de fila y luego asigne manualmente el nuevo modelo del argumento ObjectValue. Todavía no sé por qué esto es necesario, cuando las celdas de texto hacen esto automáticamente, pero funciona.