2012-06-04 15 views
5

Ich möchte die Auswahl von NSPopUpButton an einen der vordefinierten Werte binden. Um es einfacher zu machen, stellen Sie sich eine Blog App vor: Ich hätte BlogPost und Category Entitäten (Kerndaten, obwohl es keine Rolle spielt) und jedes BlogPost Objekt hat eine Verbindung zu einem der Category Objekte (über category Eigenschaft).So richten Sie Bindungen für NSPopUpButton ein

Ich möchte der Benutzer haben die Kategorie durch NSPopUpButton ändern, so in meinem XIB, ich NSArrayController haben, die alle möglichen Kategorien hält und binde ich die Taste Inhalt Werte zu:

  • Binden an: categoriesArrayController
  • Controller-Taste: arrangedObjects
  • Schlüssel Model: Titel

Dies ist gut gefüllt mit Titeln aller Kategorien. Ich kann auch binden Objekt Ausgewählte an:

  • Binden an: blogObjectController (oder direkt an Blog Objekt)
  • Controller-Taste: Auswahl
  • Modellschlüssel: Kategorie

Diese funktionierende und korrekte Kategorie wird im Popup ausgewählt, jedoch changi Die Auswahl ändert nicht die Kategorie, unter der der Blogpost abgelegt wird, sondern ändert den Titel der Postkategorie in den ausgewählten Wert.

Angesichts der oben genannten Bindungen macht dies eigentlich Sinn, also war mein nächster Schritt, die Bindung von Pop-up-Inhaltswerte auf arrangedObjects (kein Modellschlüssel), ähnlich ausgewähltes Objekt zu ändern. Diese funktionierende und sich ändernde Auswahl ändert sich tatsächlich von category des Blogposts zu einem anderen. ABER es nicht Kategorie Titel in der Pop-up-Menü anzeigen, sondern zeigt die description der Kategorie (die in Kerndaten mit so etwas wie <Category 0x1002b6990> (entity: Category; id: .......) endet.

was Sinn macht, auch, so stellte ich benutzerdefinierte NSValueTransformer (non (reversible). Das behebt Artikelbeschreibungen im Popup-Menü, aber dann funktioniert die Auswahl nicht. Ich habe auch versucht, den Transformer für die ausgewählte Objektbindung zu verwenden, aber das deaktiviert nur mein Popup komplett (vielleicht wäre eine umgekehrte Transformation erforderlich, aber dies würde Transformator wesentlich komplizieren.)

Fehle ich etwas offensichtliches - ist es möglich, vollständig mit Bindungen zu erreichen, ohne zusätzlichen Code auf cont einzuführen Walzenschicht?

Jeder ist willkommen!

PS: Hoffnung über Text macht Sinn :)

Antwort

7

ich es versuchen würde, wie folgt:

Of NSPopupButton:

  • Bind Inhalt an: categoriesArrayController ControllerKey: arrangedObjects
  • Bindung Inhalt Werte bis: categoriesArrayController ControllerKey: arrangedObjects Modell Key Pfad: Titel
  • Bind Objekt Ausgewählte an: blogObjectController ControllerKey: (empty) Modell Key Path: content.category
+0

Das ist es, ich Erinnere dich jetzt, danke :) Ich war verwirrt als * Inhaltswerte * wurde deaktiviert, nur * Inhalt * war erlaubt. – Tom

Verwandte Themen