Guten Tag zusammen!
Ich habe ein Problem mit Cocoa-Bindings . Das "Cocoa Bindings Programming Topics" habe ich auch schon befragt
- offenbar habe ich prinzipiell etwas nicht verstanden, vielleicht kann mir hier jemand helfen:
Es geht um die Verbindung einer Subclass von NSObjectController, einem Model, und einem View.
Alle drei Objekte werden zur Laufzeit erzeugt und verbunden, nicht in InterfaceBuilder.
Zunächst wird das Model erzeugt, dann wird der Controller initialisiert, mit dem Model als Content (initWithContent: ),
danach wird ein View erzeugt, der das Model repräsentieren soll. Nach der Initialisierung des Views
binde ich ihn mit den für ihn wichtigen Keys an den Controller.
zB. [self bind:@"start" toObject:controller withKeyPath:@"selection.start", options:nil];
Meine Testsuite bestätigt mir, dass eine Änderung des entsprechenden Wertes des Models sich im View niederschlägt.
Allerdings auch nur, wenn ich "um die Änderung (mit setValue:forKey: ) herum" willChangeValueForKey: und didChangeValueForKey:
auf dem Model aufrufe. (Das passiert in der setValue:forKey: Methode des Models.)
Leider funktioniert es andersherum nicht: Wenn ich den Wert im View ändere reagiert das Model nicht.
Ich habe auch schon versucht, zusätzlich [controller selection] mit dem Key @"start" an das Model zu binden.
Ohne Erfolg.
Es gibt noch weitere Views, die die Werte desselben Models repräsentieren und dann auch ändern sollen.
Ich dachte ein Binding funktioniert immer in beide Richtungen?
Was habe ich übersehen?
Vielen Dank
Max
Ich habe ein Problem mit Cocoa-Bindings . Das "Cocoa Bindings Programming Topics" habe ich auch schon befragt
- offenbar habe ich prinzipiell etwas nicht verstanden, vielleicht kann mir hier jemand helfen:
Es geht um die Verbindung einer Subclass von NSObjectController, einem Model, und einem View.
Alle drei Objekte werden zur Laufzeit erzeugt und verbunden, nicht in InterfaceBuilder.
Zunächst wird das Model erzeugt, dann wird der Controller initialisiert, mit dem Model als Content (initWithContent: ),
danach wird ein View erzeugt, der das Model repräsentieren soll. Nach der Initialisierung des Views
binde ich ihn mit den für ihn wichtigen Keys an den Controller.
zB. [self bind:@"start" toObject:controller withKeyPath:@"selection.start", options:nil];
Meine Testsuite bestätigt mir, dass eine Änderung des entsprechenden Wertes des Models sich im View niederschlägt.
Allerdings auch nur, wenn ich "um die Änderung (mit setValue:forKey: ) herum" willChangeValueForKey: und didChangeValueForKey:
auf dem Model aufrufe. (Das passiert in der setValue:forKey: Methode des Models.)
Leider funktioniert es andersherum nicht: Wenn ich den Wert im View ändere reagiert das Model nicht.
Ich habe auch schon versucht, zusätzlich [controller selection] mit dem Key @"start" an das Model zu binden.
Ohne Erfolg.
Es gibt noch weitere Views, die die Werte desselben Models repräsentieren und dann auch ändern sollen.
Ich dachte ein Binding funktioniert immer in beide Richtungen?
Was habe ich übersehen?
Vielen Dank
Max