Bindings per Code

  • Es dürfte klar sein, dass es bei CB und MVC nicht völlig uninteressant ist, wer etwas will. Es ist sogar zentral.

    Aber hier ist es doch völlig egal, wer es will - es geht doch nur darum, dass das gezielte gemacht wird (die höhe des cubes im QCView zu ändern). Egal wer die Aufgabe anstößt, die Aufgabe macht es doch unabhängig.

    Die Methode gibt es ja und es ist quasi egal woher die aufgerufen wird. Mir geht es darum, was in der Methode passieren muss.


    Wen du einen View verwendest, der kein target-Binding hat, dan musst du eben eine Subclass machen und es dir selbst machen.

    Gut dass wir erwachsen sind und bei dem Zitat nicht alle kichernd unterm Tisch sitzen ;)
  • Original von Tom9811
    In der Cube-Klasse würde ich ein [self setHeight:123.45] machen. Im View führt dies wohl zu einem völlig anderen Ergebnis.

    Das ist ja das lustige - der cube ist ja in dem QCView - es gibt kein setHeight.
    Die Eigenschaft des Cubes <b>in</b> dem QCView ist an den QCController gebunden (per Binding)

    Klar, der QCView soll angeblich ein setInputValue:forKey kennen, aber das gibt die Fehlermeldung "not key-value bla" aus - aber es soll ja eh über das Binding gehen.

    Das ist quasi wie als würde ich ein Textfeld haben, dessen Wert ich ändern will - jedoch ohne setStringValue sondern über das Binding... Man muss doch irgendwie den Wert des Bindings ändern können - sonst wären Bindings völlig Nutzlos, wenn ich nur Controls miteinander verbinden kann...
  • Original von BalkonSurfer
    Die Methode gibt es ja und es ist quasi egal woher die aufgerufen wird. Mir geht es darum, was in der Methode passieren muss.

    Also, in Deinem Beispielprojekt braucht Deine myController-Klasse noch ein Qutlet, welches Du im Interface Builder mit dem QCPatchController verbindest. Ich nenne das jetzt einfach mal so:

    Quellcode

    1. IBOutlet QCPatchController *qcController;
    Dann brauchst Du in Deiner Action-Methode für den Button nur noch das hier machen:

    Quellcode

    1. - (IBAction)myAction:(id)sender
    2. {
    3. [qcController setValue:[NSNumber numberWithInt:<gewünschterWert>] forKeyPath:@"patch.Height.value"];
    4. }
    Michael