Domanda

Ho un NSCell personalizzato (in realtà sottoclasse NSTextFieldCell), che viene utilizzato sia in un editor stand-alone, e in un NSTableColumn (legato a Core Data attraverso NSArrayController). Quando l'utente modifica il valore, che io chiamo -[NSCell setObjectValue:] per aggiornare il valore (si tratta di un NSNumber). Questo funziona in l'editor standalone, poiché quando è fatto io aggiornare manualmente il legame su di esso.

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

Questo passo (l'aggiornamento del campo associato) non è presente quando la cella è in una NSTableView - gli spettacoli valore aggiornato fino durante la modifica dell'utente (con l'inseguimento del mouse), ma non appena è finita, il valore scatta di nuovo al persistito valore.

Il NSTableColumn è associato a una chiave di -[NSArrayController arrangedObjects]. C'è una sorta di invito a "commitEditing" o "updateBinding" che mi manca? Non riuscivo a trovare nessuna funzioni utili nella documentazione per NSCell o NSTableView.

È stato utile?

Soluzione

Per risolvere questo problema, ho implementato -tableView:setObjectValue:forTableColumn:row: nel mio NSArrayController sottoclasse. Ottengo l'istanza del mio NSManagedObject sottoclasse dal ragionamento fila, e quindi assegnare manualmente il nuovo modello della tesi ObjectValue. Io ancora non so perché ciò sia necessario, quando le celle di testo fanno automaticamente, ma funziona.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top