2013-10-01 10 views
5

Kann ich das Tag-Attribut des Elements verwenden, um einen speziellen Schlüssel/ID zu speichern, oder ist es für etwas anderes gedacht?Was ist der Zweck des Tag-Attributs von NSMenuItem?

Beispiel der beabsichtigten Verwendung:

- (void)awakeFromNib { 

    [self.popup addItemWithTitle: [NSString stringWithFormat: @"dummy title" ]]; 
    [[self.popup lastItem] setTag: 1658 ]; 
    } 

    - (IBAction)popupAction: (id)sender { 

    [self someMethod: [sender selectedItem].tag]; 

    } 

Antwort

4

ja die tag aller Kontrollen ist für abwegig Gebrauch kostenlos, können Sie verschiedene Nummern für verschiedene Elemente verwenden oder sie als eine Art von Element zu identifizieren, ist es wie du willst.

+1

Verwenden Sie einfach nicht Null, wenn Sie auch separatorItems in Ihrem Menü haben möchten. – iforce2d

+1

Offizielle NSMenuItem Docs-Website hat sehr hilfreiche para darüber, die wie folgt beginnt: 'Der Tag des Menüpunktes.und dort endet die para. – thevikas

3

Wie the documentation sagt:

Sie weisen typischerweise Tags Menüpunkte aus Interface Builder, aber Sie können sie auch programmatisch die setTag: Methode von NSMenuItem mit zuweisen.

Weitere Einzelheiten finden Sie in den Handbüchern Application Menus and Pop-Up Lists und User Interface Validation. Aber die Grundidee ist, dass es Cocoa egal ist, was Sie dort hinstellen.

Ich glaube, der beabsichtigte Zweck ist es, Sie lose Teile Ihres Codes miteinander zu koppeln - der Code, der Benutzeraktionen validiert, muss nicht wissen, wie Ihre Schnittstelle entworfen ist, und Ihre Schnittstelle muss nichts darüber wissen der Validator; Sie müssen sich nur auf eine Nummer einigen. Im modernen Cocoa ist es jedoch genauso einfach und noch lockerer, sich nur die Aktion anzusehen, sodass das Tag für alles, was Sie wollen, frei ist.