Frage

Ich habe einen Brauch NSCell (Eigentlich unterkressen NSTextFieldCell), das sowohl in einem eigenständigen Redakteur als auch in einem verwendet wird NSTableColumn (gebunden an Kerndaten durch NSArrayController). Wenn der Benutzer den Wert ändert, rufe ich auf -[NSCell setObjectValue:] um den Wert zu aktualisieren (es ist ein NSNumber). Dies funktioniert im eigenständigen Editor, da ich die Bindung manuell aktualisiere.

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

Dieser Schritt (Aktualisierung des gebundenen Feldes) fehlt, wenn sich die Zelle in einem befindet NSTableView - Der aktualisierte Wert wird während der Bearbeitung des Benutzers angezeigt (mit Mausverfolgung), aber sobald das vorbei ist, kehrt der Wert auf den persistierten Wert zurück.

Das NSTableColumn ist an einen Schlüssel von gebunden -[NSArrayController arrangedObjects]. Gibt es einen Anruf bei "Commititing" oder "UpdateBinding", das ich fehlt? Ich konnte in den Dokumenten keine nützlichen Funktionen finden NSCell oder NSTableView.

War es hilfreich?

Lösung

Um dies zu lösen, habe ich implementiert -tableView:setObjectValue:forTableColumn:row: in meinem NSArrayController Unterklasse. Ich bekomme die Instanz meiner NSManagedObject Unterklasse aus dem Zeilenargument und dann das neue Modell manuell aus dem ObjektValue -Argument zuweisen. Ich weiß immer noch nicht, warum dies notwendig ist, wenn die Textzellen dies automatisch tun, aber es funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top