Ich zweifle momentan ein wenig an meinem Verständnis bzgl. Bindings. Folgendes Setup:
* Eine nib mit einem Fenster + NSTextField und einem NSObjectController.
* NSObjectControllers content Outlet ist mit dem File's Owner verbunden (NSObject Subclass).
* Der NSObject Subclass hat ein Membervariable:
Im awakeFromNib des NSObject Subclasses binde ich wie folgt:
Wunderbar. Da ich die für "person" die entsprechenden Accessoren implementiert habe funktioniert das auch ganz gut.
Eine Person hat viele Kinder. Jedes Kind hat einen Namen (NSString). Aufgrund irgendwelcher Benutzereinstellungen möchte ich nun den Namen eines der Kinder in dem angesprochenen NSTextField anzeigen. Gesagt getan.
In + (void)initialize:
"kind" ist allerdings kein Member und hat auch nur einen getter, der das Kind aufgrund der Einstellungen ermittelt.
Im IB binde ich nun das value des NSTextFields an den NSObjectController.selection.kind.name.
Das Textfeld bleibt immer leer. Komisch. Tippe ich aber was in das leere Textfeld ein, so wird das "name" Attribut des Kindes richtigerweise geändert. Es funktioniert also nur "schreibend".
Versetze ich mich nun in die Lage des Textfields würde ich ja folgendes wissen:
* den Controller, der für mein value zuständig ist.
* den keypath, der das value liefert (selection.kind.name)
* sobald sich etwas ändert (durch die dependent keys in + (void)initialize
Also eigentlich ausreichend um zu funktionieren. Ich habe das TextField ja sogar durch ein NSObjectController gebunden - mehr als eigentlich notwendig...
Any ideas?
* Eine nib mit einem Fenster + NSTextField und einem NSObjectController.
* NSObjectControllers content Outlet ist mit dem File's Owner verbunden (NSObject Subclass).
* Der NSObject Subclass hat ein Membervariable:
Im awakeFromNib des NSObject Subclasses binde ich wie folgt:
Wunderbar. Da ich die für "person" die entsprechenden Accessoren implementiert habe funktioniert das auch ganz gut.
Eine Person hat viele Kinder. Jedes Kind hat einen Namen (NSString). Aufgrund irgendwelcher Benutzereinstellungen möchte ich nun den Namen eines der Kinder in dem angesprochenen NSTextField anzeigen. Gesagt getan.
In + (void)initialize:
"kind" ist allerdings kein Member und hat auch nur einen getter, der das Kind aufgrund der Einstellungen ermittelt.
Im IB binde ich nun das value des NSTextFields an den NSObjectController.selection.kind.name.
Das Textfeld bleibt immer leer. Komisch. Tippe ich aber was in das leere Textfeld ein, so wird das "name" Attribut des Kindes richtigerweise geändert. Es funktioniert also nur "schreibend".
Versetze ich mich nun in die Lage des Textfields würde ich ja folgendes wissen:
* den Controller, der für mein value zuständig ist.
* den keypath, der das value liefert (selection.kind.name)
* sobald sich etwas ändert (durch die dependent keys in + (void)initialize
Also eigentlich ausreichend um zu funktionieren. Ich habe das TextField ja sogar durch ein NSObjectController gebunden - mehr als eigentlich notwendig...
Any ideas?
Die Objective-Cloud ist fertig wenn sie fertig ist. Beta heißt Beta.
Objective-C und Cocoa Band 2: Fortgeschrittene
Cocoa/Objective-C Seminare von [co coa:ding].
Objective-C und Cocoa Band 2: Fortgeschrittene
Cocoa/Objective-C Seminare von [co coa:ding].