El constructor de UIAlertSheet toma un parámetro otherButtonTitles como una lista varg. Me gustaría especificar los otros títulos de botones de un NSArray en su lugar. es posible?¿Utiliza NSArray para especificar otherButtonTitles?
es decir, que tengo que hacer esto:
id alert = [[UIActionSheet alloc] initWithTitle: titleString
delegate: self
cancelButtonTitle: cancelString
destructiveButtonTitle: nil
otherButtonTitles: button1Title, button2Title, nil];
Pero ya que estoy generando la lista de botones disponibles en tiempo de ejecución, lo que realmente quiero algo como esto:
id alert = [[UIActionSheet alloc] initWithTitle: titleString
delegate: self
cancelButtonTitle: cancelString
destructiveButtonTitle: nil
otherButtonTitles: otherButtonTitles];
En este momento, Estoy pensando que necesito tener una llamada separada a initWithTitle:
para 1 artículo, 2 artículos y 3 artículos. De esta manera:
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
}
Eso es un montón de código duplicado, pero en realidad podría ser razonable ya que tengo un máximo de tres botones. ¿Cómo puedo evitar esto?
No estoy seguro de por qué funcionó para usted, pero tuve que hacer "[número de títulos] - 1" para que funcione para mí, iOS 7. – Micah
[número de alerta de botones] -1 es otra forma de establecer el índice del botón cancelar – Keith
Menor Nota: Usando los nombres que ha establecido aquí, creo que 'sheet.cancelButtonIndex' debería ser' alert.cancelButtonIndex', ¿sí? – Matt