Il costruttore di UIAlertSheet assume un parametro otherButtonTitles come elenco di varg. Vorrei invece specificare gli altri titoli dei pulsanti da un NSArray. È possibile?Utilizzare NSArray per specificare otherButtonTitles?
cioè che devo fare questo:
id alert = [[UIActionSheet alloc] initWithTitle: titleString
delegate: self
cancelButtonTitle: cancelString
destructiveButtonTitle: nil
otherButtonTitles: button1Title, button2Title, nil];
Ma dal momento che sto generando l'elenco dei pulsanti disponibili in fase di runtime, voglio davvero qualcosa di simile:
id alert = [[UIActionSheet alloc] initWithTitle: titleString
delegate: self
cancelButtonTitle: cancelString
destructiveButtonTitle: nil
otherButtonTitles: otherButtonTitles];
In questo momento, mi Sto pensando che ho bisogno di avere una chiamata separata a initWithTitle:
per 1 oggetto, 2 articoli e 3 articoli. Come questo:
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
}
Questo è un sacco di codice duplicato, ma potrebbe in realtà essere ragionevole dal momento che ho al massimo tre pulsanti. Come posso evitare questo?
Non sono sicuro del motivo per cui ha funzionato per te, ma dovevo fare "[titoli count] - 1" perché funzioni per me, iOS 7. – Micah
[alert numberOfButtons] -1 è un altro modo per impostare l'indice del pulsante di annullamento – Keith
Minore nota: utilizzando i nomi che hai stabilito qui, penso che 'sheet.cancelButtonIndex' dovrebbe essere' alert.cancelButtonIndex', sì? – Matt