Ho un foglio di azione con opzioni che variano a seconda delle circostanze. Ci sono abbastanza titoli di pulsanti diversi che mi piacerebbe costruire prima un array di quei titoli di pulsanti, ma non riesco a capire come convertirlo nel formato varargs.Come posso inviare un array di stringhe in un metodo init varargs UIActionSheet?
voglio fare qualcosa di simile:
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];
Ora, ovviamente se dovessi avrei potuto fare qualcosa di simile, invece:
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!
ma che sarebbe orribile. Qualcuno conosce un bel zucchero sintattico per aiutarmi?
EDIT: E 'stato suggerito che uso addButtonWithTitle
, che sul volto di esso sembra grande, purtroppo, questo mette i tasti supplementari dopo il pulsante di annullamento, che non è auspicabile.
Credo che questo sia bug con il codice di Apple in quanto la loro documentazione su addButtonWithTitle
stati:
// 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.
requisiti HI (propri Human Interface Guidelines di Apple) favorire il pulsante Annulla in basso tutte le altre opzioni, quindi direi di Apple avvitato. Naturalmente, questo non mi aiuta molto, quindi sono tornato a provare a convertire tra un NSArray e un varargs, che ancora non so come fare.
Ho pensato che funzionasse, ma ho trovato alcuni problemi con esso, vedi modifica. –
Controllare la modifica. –
Questo ha funzionato. Non sembrava esserci alcun bisogno di fare scherzi con titoli extra. –