Tengo una hoja de acción con opciones que varían según las circunstancias. Hay suficientes títulos de botones diferentes que me gustaría construir una serie de esos títulos de botón en primer lugar, pero no puedo averiguar cómo convertir eso en el formato varargs.¿Cómo puedo enviar una matriz de cadenas en un método de inicio varargs de UIActionSheet?
yo a querer hacer algo como esto:
NSMutableArray *buttonTitles = [NSMutableArray array];
if (condition1) {
[buttonTitles addObject: @"Do action 1"];
}
if (condition2) {
[buttonTitles addObject: @"Do action 2"];
}
if (condition3) {
[buttonTitles addObject: @"Do action 3"];
}
if (condition4) {
[buttonTitles addObject: @"Do action 4"];
}
UIActionSheet *actionSheet = [[[UIActionSheet alloc] initWithTitle: nil delegate: self cancelButtonTitle: @"Cancel" destructiveButtonTitle: nil otherButtonTitles: buttonTitles] autorelease];
Ahora, evidentemente, si tuviera que yo podría hacer algo como esto en su lugar:
UIActionSheet *actionSheet = nil;
if (condition1 && condition2 && condition3 && condition4) {
actionSheet = [[[UIActionSheet alloc] initWithTitle: nil delegate: self cancelButtonTitle: @"Cancel" destructiveButtonTitle: nil otherButtonTitles: @"Do action1", @"Do action2", @"Do action3", @"Do action 4", nil] autorelease];
} else if (condition1 && condition2 && condition3 && !condition4) {
actionSheet = [[[UIActionSheet alloc] initWithTitle: nil delegate: self cancelButtonTitle: @"Cancel" destructiveButtonTitle: nil otherButtonTitles: @"Do action1", @"Do action2", @"Do action3", nil] autorelease];
}
// else ...
// about 14 other cases!
Pero eso sería horrible. ¿Alguien sabe un buen azúcar sintáctico para ayudarme?
EDIT: Se ha sugerido que utilizo addButtonWithTitle
, que en la cara de ella se ve muy bien, por desgracia, esto pone los botones adicionales después de que el botón de cancelación, lo cual no es deseable.
Creo que esto es error con el código de Apple, ya que su documentación sobre addButtonWithTitle
estados:
// adds a button with the title. returns the index (0 based) of where it was added. buttons are displayed in the order added except for the
// destructive and cancel button which will be positioned based on HI requirements. buttons cannot be customized.
requisitos HI (propios Human Interface Guidelines de Apple) favorecen el botón Cancelar debajo de todas las otras opciones, así que diría de Apple jodido. Por supuesto, eso realmente no me ayuda, así que volví a intentar convertir un NSArray y un varargs, que todavía no sé cómo hacer.
Pensé que esto funcionaba, pero encontré algunos problemas con él, ver edición. –
Por favor, verifique la edición. –
Esto funcionó. Sin embargo, no parecía haber ninguna necesidad de meterse con ningún título extra. –