NSPopUp Menü/Einträge

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

  • NSPopUp Menü/Einträge

    Hallo Zusammen,

    ich verstehe im Zusammenhang mit NSPopUp Menü Einträge (Text/Titel und Wert) etwas nicht. :/ In PHP ist es relativ einfach den angezeigten Text mit einem Wert zu verknüpfen, der dann beim betätigen des Auswahlfeldes geliefert wird - der Wert ist gemeint.
    In meinen beiden COCOA Büchern finde ich nur Hinweise hierzu und leider fehlt mir da anscheinend die richtige Info um es zu verstehen bzw. zu realisieren. ?( Einen angezeigten Texte/Menüeintrag eines NSPopUP Menü/Button abzufragen und weiterzuverarbeiten funktioniert einwandfrei. :thumbsup:

    Nur wie löse ich folgendes Problem:
    Array von Strings - Menüeinträge (Titel) die dem User angezeigt werden: Deutschland, Frankreich, Spanien
    Array von Strings (Wert), welche nach der Auswahl geliefert werden soll: DE, FR, SP

    Könnte mir jemand ein Beispielcode zukommen lassen, der diese Ergebnisse oder so etwas ähnliches liefert oder mir Quellen nennen.

    Vielen Dank.
  • Hallo little_pixel,

    danke für Deinen Hinweis. Leider habe ich kein Beispiel zum Begriff representedObject gefunden, nur Erläuterungen.

    Meine Lösung sieht nun wie folgt aus:

    Ich habe eine Länderkennzeichenklasse

    @interface laenderkennzeichen : NSObject {
    NSString *kurzzeichen;
    NSString *flaeche;
    NSNumber *einwohneranzahl;
    ....
    }

    des Weiteren habe ich ein NSMutableArray gefüllt mit den Ländernamen, welches an das NSPopUpMenu gebunden ist.
    laenderArray, arrangedObject content values : laenderArray, arrangedObjects, kurzzeichen

    Die Länderkennzeichen erhalte ich nun so:
    -(IBAction) laenderPopupItemSelected:(id) sender
    {
    NSPopUpButton *btland = (NSPopUpButton*)sender;

    int index = [btland indexOfSelectedItem];
    Länderkennzeichen *land = [laenderArray objectAtIndex:index];

    NSLog(@"%@ => %@", [land kurzzeichen], [land flaeche]); //..........
    }

    Wie kann ich dies mit "representedObject" lösen? Macht es Sinn diesen Weg zu gehen oder ist meine Lösung der "richtige" Ansatz?

    Vielen Dank
  • Hallo,

    Du kannst natürlich aber auch über einen Index gehen.
    Dann ist aber nichts mit sortierter Reiehenfolge anzeigen.

    Du gehst mit einer Schleife über Dein Array und erzeugst immer für jede Länderkennung ein NSMenuItem.
    Dann verwendest Du die -setRepresentedObject: Metode und übergibst die Länderkennung, oder besser "MyCountryClass".

    Klickt der Anwender, dann kannst Du mit dem -representedObject abfragen, wer dahinter steckt.

    developer.apple.com/library/ma…enuItem/representedObject

    Viele Grüße
  • Hallo,

    das hört sich wirklich einfacher an als es ist. Hätte nicht gedacht, dass mir dies soviel Stress bereitet.

    Also, Die Schleife läuft über das Array und jede Länderkennung erhält ein NSMenuitem. Soweit so gut.

    Nun schreibst Du einfach die -setRepresentedObject: Methode verwenden und die Länderkennung bzw. die Class übergeben und dies will bei mir einfach nicht funktionieren. Ich verwende XCODE 7.2, gibt es diese Methode da evtl. nicht mehr?

    Sorry - möglicherweise sitze ich schon zu lange vor dieser Herausforderung und sehe den Wald vor lauter Bäumen nicht mehr.

    Kannst Du mir auf die Sprünge helfen.

    Vielen Dank.
  • 1. In PHP ist das gar nicht möglich (du meinst wohl HTML).

    2. du erstellst für jedes land das im menü erscheinen soll ein NSMenuItem welches du dann zum menü hinzufügst. Jedem dieser menuItems setzt du mittels setRepresentedObject eben das länderkürzel oder was auch immer du nachher gerne hättest.
  • Okay, dies bedeutet für das obige Beispiel, dass in popUp das NSMenuItem geliefert wird.

    Wenn ich mir nun nicht selbst auf den Füßen stehe, bedeutet die zweite Zuweisung doch nicht anderes als dass dem NSObject popUP ein weiterer Wert zugeordnet wird und wie stelle ich dies an ohne den Titel zu löschen?
  • Ich habe noch eine andere Lösung gefunden, welche ich gerne hier mal zur Diskussion stellen würde.

    Der Einsatz des "Array Controllers" in Verbindung mit einem NSArray welches NSDictionary-Einträge enthält.

    Da ich mich gerade in die Materie einarbeite, würde es mich interessieren welche Vor- und Nachteile dieser Lösungsansatz mit sich bringt?

    Schon einmal Danke im voraus.
  • @gritsch: Da ich davon ausgehe, dass sich das Entwicklerteam von XCODE etwas gedacht hat, als es eine solche Möglichkeit zu Verfügung gestellt hat und sich mir dieser Hintergrund augenblicklich nicht erschliesst, wollte ich von den Profis hier Antworten bzw. Hinweise erhalten. Mit einer Gegenfrage zu kontern beantwortet leider keine Fragen, geschweige den gibt es Aufschluss/Hinweise auf die Hintergründe. Tiefere Einblicke in die Materie erhält man nur durch studieren entsprechender Literatur oder eben durch einen konstruktiven Dialog.

    @little_pixel: Danke. Vielleicht weisst Du wo die Verknüpfungen beim Einsatz des "Array Controllers" zu finden sind. Es würde mir weiterhelfen.


    Vielen Dank Euch Beiden
  • 1. Xcode nicht XCODE und auch nicht xCode etc... ;)

    2. doch die gegenfrage hilft sehr oft

    3. es gibt für vieles mehrere lösungswege und meist passt einer am besten zur eigenen situation. wenn man also nicht weiß welcher zur eigenen situation passt, kann man alle (ok, mehrere) versuchen und dann entscheiden welcher am sinnvollsten, schnellsten, saubersten, passendsten ist. (oder was auch immer einem grad wichtig ist).