Der Konstruktor von UIAlertSheet verwendet einen anderenButtonTitles-Parameter als eine Varg-Liste. Ich möchte stattdessen die anderen Schaltflächentitel von einem NSArray angeben. Ist das möglich?Verwenden Sie NSArray, um otherButtonTitles anzugeben?
dh ich, dies zu tun haben:
id alert = [[UIActionSheet alloc] initWithTitle: titleString
delegate: self
cancelButtonTitle: cancelString
destructiveButtonTitle: nil
otherButtonTitles: button1Title, button2Title, nil];
Aber da ich die Liste der verfügbaren Tasten zur Laufzeit zu erzeugen, ich möchte wirklich so etwas wie dieses:
id alert = [[UIActionSheet alloc] initWithTitle: titleString
delegate: self
cancelButtonTitle: cancelString
destructiveButtonTitle: nil
otherButtonTitles: otherButtonTitles];
jetzt Richtig, ich Ich denke, dass ich einen separaten Anruf an initWithTitle:
für 1 Artikel, 2 Artikel und 3 Artikel haben muss. Wie folgt:
if ([titles count] == 1) {
alert = [[UIActionSheet alloc] initWithTitle: titleString
delegate: self
cancelButtonTitle: cancelString
destructiveButtonTitle: nil
otherButtonTitles: [titles objectAtIndex: 0], nil];
} else if ([titles count] == 2) {
alert = [[UIActionSheet alloc] initWithTitle: titleString
delegate: self
cancelButtonTitle: cancelString
destructiveButtonTitle: nil
otherButtonTitles: [titles objectAtIndex: 0], [titles objectAtIndex: 1], nil];
} else {
// and so on
}
Das ist eine Menge Doppel-Code, aber es könnte tatsächlich sinnvoll sein, da ich höchstens drei Tasten habe. Wie kann ich das vermeiden?
Nicht sicher, warum es für Sie funktioniert hat, aber ich musste "[titles count] - 1" für iOS 7 verwenden. – Micah
[alert numberOfButtons] -1 ist eine weitere Möglichkeit, den Index der Abbruchschaltfläche zu setzen – Keith
Minor Hinweis: Mit den Namen, die Sie hier festgelegt haben, sollte 'sheet.cancelButtonIndex'" alert.cancelButtonIndex "sein, ja? – Matt