Ergebnis 1 bis 6 von 6
  1. #1
    Rheinischer Bohnapfel
    Themenstarter
    Avatar von MatzeLoCal
    Registriert
    01.2004
    Ort
    Bischofsheim/Rhön, Bayern
    Beiträge
    2.421

    [Cocoa-Bindings] Ergebgnis mit Cocoa-Bindings in ein Label Schreiben?

    Hallo,

    ich würde gerne über Cocoa-Bindings ein Ergebnis in ein Label (NSTextField/System Font Text) schreiben, die Werte dazu erhalte ich aus zwei Eingabefeldern (NSTextFiled). Das "ziehen der Daten" ist soweit auch kein Problem, nur wie bekomme ich die Daten in das "Label"? Irgendwie stehe ich vor einer Wand

    Thx,

    LoCal
    le monde de matzelocal | /dev/blog | flickr | i.use.this | del.icio.us | facebook | twitter
    die Straße ist nicht immer eben und grad deswegen: Auf das Leben
    (jupiter jones - auf das leben)

  2. #2
    Pomme Etrangle Avatar von Squart
    Registriert
    01.2004
    Ort
    Alzenau
    Alter
    24
    Beiträge
    910

    Re: [Cocoa-Bindings] Ergebgnis mit Cocoa-Bindings in ein Label Schreiben?

    Sind das deine Anfänge mit Cocoa-Bindings? Wenn ja, probiere mal folgenden Artikel aus: http://www.macentwicklerwelt.net/ind...Cocoa_Bindings

    Also, du brauchst einen NSObjectController. Erstelle eine Instanz von diesem. Als nächstes brauchst du eine Instanz von deinem Modell. Erstelle eine Verbindung von NSObjectCotroller zu deiner ModelInstanz und wähle das Outlet "Content". Als nächstes musst du noch unter den Attributen des NSObjectController einstellen, wie dein Modell heißt.
    Dannach fügst du dem NSObjectController Keys zu. Diese müssen so ausgewählt sein, dass dein Model Getter und Setter für die Keys hat. Beispielsweiße gibst du den Key "blaubaer" ein, dann brauch dein Model auch den Setter - (void)setBlaubaer: und den Getter - (NSString*)blaubaer. (Wichtig ist die Großschreibung bei dem setter).

    So, nun gehst du auf das Textfeld 1 -> Bindings -> Value -> Bind to NSObjectController && Model Key Path = blaubaer.
    Dies machst du auch mit Textfeld2.
    Und mit dem Label.

    So, da dein Model intern gut arbeitet wird es selbstständig das Ergebnis, welches du im Label ausgeben willst, erstellen. Die Bindings regeln das nun für dich: Sobald du innerhalb deiner Methode - (void)setBlaubaer:... die Methode - (void)setResult: aufrufst, steckt NSObjectController den neuen Wert in das Label.

    So, ich hoffe, dass du damit etwas anfangen kannst, und dass ich deutlich genug formuliert habe. Ich rate dir dennoch den oben genannten Artikel zu lesen, auch im Falle dass dein Problem gelöst ist.
    [FONT=Century Gothic]There are 10 kinds of people in the world - those who understand binary
    and those who don't.[/FONT]

  3. #3
    Rheinischer Bohnapfel
    Themenstarter
    Avatar von MatzeLoCal
    Registriert
    01.2004
    Ort
    Bischofsheim/Rhön, Bayern
    Beiträge
    2.421

    Re: [Cocoa-Bindings] Ergebgnis mit Cocoa-Bindings in ein Label Schreiben?

    Olà,

    vielen Dank erstmal.
    Bis auf einen kleinen Fehler hatte ich das so schon, nur wird das Label nicht aktuallisiert und die set-Methoden nicht zu funktionieren...
    Ich prüfe das zur Laufzeit mit NSLog() und bei den gettern funzt das .. nur bei den settern nicht... hmm..

    LoCal
    le monde de matzelocal | /dev/blog | flickr | i.use.this | del.icio.us | facebook | twitter
    die Straße ist nicht immer eben und grad deswegen: Auf das Leben
    (jupiter jones - auf das leben)

  4. #4
    Pomme Etrangle Avatar von Squart
    Registriert
    01.2004
    Ort
    Alzenau
    Alter
    24
    Beiträge
    910

    Re: [Cocoa-Bindings] Ergebgnis mit Cocoa-Bindings in ein Label Schreiben?

    Funktioniert es vielleicht, wenn du deine Eingabe mit return bestätigst?
    [FONT=Century Gothic]There are 10 kinds of people in the world - those who understand binary
    and those who don't.[/FONT]

  5. #5
    Pomme Etrangle Avatar von Squart
    Registriert
    01.2004
    Ort
    Alzenau
    Alter
    24
    Beiträge
    910

    Re: [Cocoa-Bindings] Ergebgnis mit Cocoa-Bindings in ein Label Schreiben?

    Sorry, ich habe vergessen, worauf ich hinaus wollte.

    Also: Die standard Einstellung der Bindings sagen, dass das Model erst ein Update bekommen soll, sobald die return-Taste betätigt wird.
    Aber es gibt noch schönere Wege. Wähle jedes einzelne TextField aus, gehe auf Bindings->Value und aktiviere dort die Checkbox "Continously update values" (oder ähnlich, habe den genauen Wortlaut nicht im Kopf).
    Dannach dürfte bei jeder neu eingegebenen Taste das Model geupdated werden und in den anderen Views angezeigt werden.

    Gruß
    [FONT=Century Gothic]There are 10 kinds of people in the world - those who understand binary
    and those who don't.[/FONT]

  6. #6
    Rheinischer Bohnapfel
    Themenstarter
    Avatar von MatzeLoCal
    Registriert
    01.2004
    Ort
    Bischofsheim/Rhön, Bayern
    Beiträge
    2.421

    Re: [Cocoa-Bindings] Ergebgnis mit Cocoa-Bindings in ein Label Schreiben?

    Olà,

    vielen Dank noch mal und sorry, dass ich mich erst so spät melde.

    Also der Fehler war wohl folgender:

    In dem Label sollte das Ergebnis einer Berechnung stehen, für die die Werte von den zwei Textfeldern benötigt wurden. Ich hatte es erst so gemacht, dass in den settern für die Textfeld-Werte, die Berechnung angestossen wird und die habe ich direkt im setter für das Label gemacht... und das war wohl der fehler.

    Also zuerst sah meine setter für das Label quasi so aus:

    Code:
    -(void) setResult
    {
        result = wert1 + wert2; //Die Berechnung war natürlich etwas anders (Hubraumberechnung bzw Kompressionshöhe)
    }
    Das funzte aber nicht... nun habe ich es so

    Code:
    -(void)setResult:(float)aResult
    {
        result = aResult;
    }
    
    -(float)calculateResult
    {
        return = wert1 + wert2;
    }
    und im setter von wert1 und wert2 steht dann noch
    Code:
    {
        .
        [self setResult:[self calculateResult]];
    }
    Auf die Weise funktioniert es zumindest etz.

    Vielen Dank nochmal,

    LoCal
    le monde de matzelocal | /dev/blog | flickr | i.use.this | del.icio.us | facebook | twitter
    die Straße ist nicht immer eben und grad deswegen: Auf das Leben
    (jupiter jones - auf das leben)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •