Dynamische UIMenuItems mit @selector und dynamischen Methoden

8

Ich versuche, UIMenuController für ein dynamisches Menü zu verwenden (Titel und Aktionen kommen von einem Server). Das Problem ist, dass ich UIMenuItems initWithTitle verwenden muss: action: wobei action ein @selector ist.

Ich kann @selector (dispatch :) verwenden, aber dann kann ich nicht unterscheiden, welche der Elemente der Benutzer gedrückt hat. - (void) dispatch: (id) Absender {NSLog (@ "% @", Absender); } sagt, es ist ein UIMenuController und es gibt keine Methode, die sagen würde, welcher Menüpunkt gedrückt wurde.

Ich kann nicht einfach 100 Methoden schreiben, um jeden möglichen Selektor zu versenden, ok, es wird nicht mehr als 10 geben, aber das scheint keine gute Idee zu sein.

Muss ich für jeden dieser Selektoren dynamische Methoden erstellen? Ссылка ? Das scheint auch seltsam.

Gibt es bessere Vorschläge als diese zwei?

// Dieser Ansatz funktioniert nicht.

%Vor%

// Dieser Ansatz ist wirklich hässlich.

%Vor%     
Jeena 14.07.2010, 18:21
quelle

2 Antworten

10

Dieser Ansatz würde funktionieren, obwohl Sie für jede Schaltfläche einen eindeutigen Selektor-Namen und eine Zuordnung von diesem Namen zu dem, was Sie anvisieren möchten, benötigen.
Für den Namen des Selektors muss eine eindeutige Zeichenkette gewählt werden (UUIDs oder eine vorbereitete Version des Titels). Dann brauchen Sie eine Methode, die den Aufruf auflöst und "alias" mit den verschiedenen Selektornamen:

%Vor%

Nun kann der Forwarder nachsehen, welche URL mit dem Menüpunkt verknüpft ist:

%Vor%

Um die Selektoren zu erzeugen, könnten Sie etwas wie folgt verwenden:

%Vor%     
Georg Fritzsche 14.07.2010, 20:51
quelle
0

Wenn die Menüpunkte nicht dasselbe tun, warum sollte sie eine Aktion teilen? Ich würde fortfahren und Aktionen schreiben, die ein gewünschtes Verhalten spezifizieren und die Menüpunkte mit denen verknüpfen.

    
Chuck 14.07.2010 20:26
quelle