2010-11-14 19 views
5

Sono sicuro che a questo deve essere già data una risposta, ma sto cercando di trovare i termini di ricerca giusti per la risposta.Come passare elementi di una matrice alla funzione variadica?

Nel mio codice obiettivo-c ho un NSArray di stringhe di numeri sconosciuti che voglio passare i suoi elementi a un metodo variadic init, in questo caso è la ... lista di 'otherButtonTitles' nel costrutto di UIActionSheet . Come può essere realizzato?

grazie in anticipo

risposta

3

Credo sarebbe necessario passare il primo elemento della matrice al costruttore e quindi utilizzare il metodo addButtonWithTitle il ciclo tra gli elementi rimanenti e aggiungerli:

UIActionSheet *mySheet = [[UIActionSheet alloc] initWithTitle:title delegate:delegate cancelButtonTitle:cancelButtonTitle destructiveButtonTitle:destructiveButtonTitle otherButtonTitles:[myOtherButtons objectAtIndex:0],nil]; 

NSMutableArray *otherbuttons = myOtherButtons; 
[otherButtons removeObjectAtIndex:0]; 

NSEnumerator *enumerator = [otherButtons objectEnumerator]; 
id anObject; 

while (title = [enumerator nextObject]) { 
    [mySheet addButtonWithTitle:title]; 
} 
+0

Immagino di aspettarmi qualcosa di leggermente più elegante, grazie però, funziona bene. – Elric

3

Non esiste un modo generale per farlo, ma per UIActionSheet in particolare, non è necessario utilizzare quel costruttore.

UIActionSheet *sheet = [[UIActionSheet alloc] init]; 

// set properties 
sheet.title = @"Title!"; 

// add buttons 
for (NSString *buttonTitle in otherButtonTitles) { 
    [sheet addButtonWithTitle:buttonTitle]; 
} 

sheet.cancelButtonIndex = 
    [sheet addButtonWithTitle:@"Cancel"]; 

UIAlertView può essere inizializzato in modo simile.

Problemi correlati