Bindings zu NSView Properties

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Bindings zu NSView Properties

    Hallo Community,
    ich habe folgendes Problem: ich möchte eine Property von einem Custom View mit einem Eingabefeld auf der Benutzeroberfläche verbinden. Dazu habe ich ein Outlet im App Delegate erstellt und dann bei meinem eingabefeld unter "Value" ein Bindung erstellt:
    Bind to: App Delegate
    Controller Key:
    Model Key Path: self.meinViewOutlet.meineProperty
    Value Transformer:

    Ich erhalte jedoch die Exception "this class is not key value coding-compliant for the key description."

    Kann das überhaupt funktionieren oder muss ich das ganze über eine Methode im Delegate lösen?

    Ich bin für jede Antwort dankbar !

    chuck
  • 1. Die Fehlermeldung deutet noch auf einen anderen Fehler hin. Aber ds ist erst einmal egal:

    2. Das self brauchst du hier nicht.

    3. Views werden gebunden. Man bindet nicht an Views. Richtig wäre es hier, beide Views an dieselbe Eigenschaft des Controllers zu binden.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:



    2. Das self brauchst du hier nicht.
    okay, das ergibt auch so mehr sinn, hatte es nur so probiert weil es ohne (auch) nicht geklappt hat


    Amin Negm-Awad schrieb:

    3. Views werden gebunden. Man bindet nicht an Views. Richtig wäre es hier, beide Views an dieselbe Eigenschaft des Controllers zu binden.
    Achso okay das habe ich jetzt gemacht, also die TextFields an den Delegate gebunden. Das Bindung vom CustomView an den AppDelegate muss ich per Code erstellen ? Der Interface Builder bietet mir dort ja keinen Zugriff auf die eigenen Properties.
  • Okay, mein Konstrukt sieht nun so aus:
    nib: enthält TextField welches mit der property description vom App Delegate verbunden ist
    Dieses bindig funktioniert und erzeugt keine Fehler.
    mein Appdelegate enthält ein Outlet von meinem View:

    Quellcode

    1. .h:@property (weak) IBOutlet NSLayoutConstraint *keyView;

    Quellcode

    1. .m:@synthesize keyView = _keyView;

    und soll folgendes Binding wie folgt erzeugen:

    Quellcode

    1. - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
    2. {
    3. [_keyView bind:@"description" toObject:self withKeyPath:@"description" options:nil];
    4. }



    description ist in meinem View als property und ivar angelegt. Leider erhalte ich immernoch die Fehlermeldung. Muss ich auf sonst noch etwas achten?
  • chukky94 schrieb:

    Okay, mein Konstrukt sieht nun so aus:
    nib: enthält TextField welches mit der property description vom App Delegate verbunden ist
    Dieses bindig funktioniert und erzeugt keine Fehler.
    mein Appdelegate enthält ein Outlet von meinem View:

    Quellcode

    1. .h:@property (weak) IBOutlet NSLayoutConstraint *keyView;

    Quellcode

    1. .m:@synthesize keyView = _keyView;

    und soll folgendes Binding wie folgt erzeugen:

    Quellcode

    1. - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
    2. {
    3. [_keyView bind:@"description" toObject:self withKeyPath:@"description" options:nil];
    4. }



    description ist in meinem View als property und ivar angelegt. Leider erhalte ich immernoch die Fehlermeldung. Muss ich auf sonst noch etwas achten?

    1. die Property description muss KVC-compliant sein (siehe Fehlermeldung).

    2. -description ist eine Methode von NSObject. Was passiert wohl, wenn du eine Property so nennst?
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Habe jetzt den Fehler gefunden. Mein Outlet hatte die falsche Klasse, da ich beim Ziehen den übergeordneten View verwendet habe. Nun geht das ganze nachdem ich "description" in "letterDescription" geändert habe. Vielen Dank für den wichtigen Hinweis, das mit dem Methodennamen habe ich nicht beachtet, werde aber sicher nie mehr eine Property so nennen. 8o