Ich habe eine Reihe von Zeichenfolgen, die ich für Schaltflächentitel in einem UIActionSheet verwenden möchte. Leider verwendet das Argument otherButtonTitles: im Methodenaufruf eine Liste von Zeichenfolgen mit variabler Länge, kein Array.
Wie kann ich diese Titel an das UIActionSheet übergeben? Die Problemumgehung, die ich vorgeschlagen habe, besteht darin, nil an otherButtonTitles: zu übergeben und dann die Schaltflächentitel mithilfe von addButtonWithTitle: einzeln anzugeben. Dies hat jedoch das Problem, dass die Schaltfläche "Abbrechen" an die erste Position im UIActionSheet und nicht an die letzte Position verschoben wird. Ich möchte, dass es der letzte ist.
Gibt es eine Möglichkeit, 1) ein Array anstelle einer variablen Liste von Zeichenfolgen zu übergeben oder alternativ 2) die Schaltfläche Abbrechen an den unteren Rand des UIActionSheets zu verschieben?
Vielen Dank.
quelle
Antworten:
Ich habe das zum Laufen gebracht (Sie müssen nur mit einem normalen Knopf in Ordnung sein und es einfach nachher hinzufügen:
quelle
cancelButton
ist nicht rot. DasdestructiveButton
ist rot.[UIActionSheet addButtonWithTitle]
der nicht richtig eingestellt zu sein scheintfirstOtherButtonIndex
(der in den Delegaten verwendet werden sollte,actionSheet:clickedButtonAtIndex:
anstatt 0 oder ähnliches hart zu codieren). Es klingt auch nicht nach einer großartigen Lösung, mit dem Konvertieren vonNSArray
in böse zuva_list
werden. :-( Diese API ist so verdammt hässlich.Ein kleiner Hinweis: [actionSheet addButtonWithTitle:] gibt den Index dieser Schaltfläche zurück. Um sicher und "sauber" zu sein, können Sie dies tun:
quelle
destructiveButtonIndex
dafürNehmen Sie die Antworten von Jaba und Nick und erweitern Sie sie ein wenig weiter. So integrieren Sie einen Zerstörungsknopf in diese Lösung:
quelle
Es gibt die schnelle Version für die Antwort:
Fügen Sie Ihrem ViewController einen Delegaten hinzu, um den Wert auszuwählen:
Und implementieren Sie die Methode "clickedButtonAtIndex"
quelle