2009-06-20 16 views
16

Un UIActionSheet è initalized con:NSArray separato a un elenco di tipo NSString oggetti

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Title" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil 
otherButtonTitles:@"Button1", @"Button2", nil]; 

Sto cercando di passare un NSArray nel messaggio "otherButtonTitles".

ho cercato di passare un NSArray utilizzando:

otherButtonTitles:[array] 

ma il messaggio è in attesa di un elenco di NSStrings.

L'unico modo che posso pensare di rompere un NSArray in un insieme di NSStrings è quello utilizzando componentsJoinedByString ma mi dà un elenco separato da virgole che è un singolo NSString.

Un punto nella giusta direzione sarebbe apprezzato.

+0

Wow ... bella domanda! Forse usando NSInvocation questo è possibile in qualche modo? –

risposta

16

Quel metodo richiede vararg. Non c'è un modo davvero semplice per rendere la conversione la tua descrizione, e sicuramente non vale la pena di provare in questo caso. Questo è solo un metodo di convenienza.

Basta usare -init e configurare tutto con le funzioni di accesso (-setDelegate:, -addButtonWithTitle:, -setCancelButtonIndex:, etc.)

+0

Vedere anche la risposta di Brad Smith relativa all'ordinamento dei pulsanti quando si utilizza l'approccio "addButtonWithTitle:" (ma notando che si * non * bisogno di sottoclasse il UIActionSheet per usare questo: sono tutti metodi pubblici): http://stackoverflow.com/questions/1262205/uiactionsheet-addbuttonwithtitle-doesnt-add-buttons-in-the-right-order –

4

Sfortunatamente, you can't do this in Objective-C.

+0

Vedere http://www.cocoawithlove.com/2009/05/variable-argument-lists-in-cocoa.html –

Problemi correlati