2010-11-14 36 views
5

Je suis sûr que cela doit déjà être répondu quelque part, mais j'ai du mal à trouver les bons termes de recherche pour la réponse.Comment passer des éléments d'un tableau à la fonction variadique?

Dans mon code objectif-c j'ai un NSArray d'un nombre inconnu de chaînes que je veux passer ses éléments à une méthode init variadic, dans ce cas, c'est la liste ... 'otherButtonTitles' dans le constructeur de UIActionSheet . Comment cela peut il etre accompli?

merci à l'avance

Répondre

3

Je pense que vous devez passer le premier élément du tableau au constructeur, puis utiliser la méthode addButtonWithTitle à boucle à travers les autres éléments et les ajouter:

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

Je suppose que je m'attendais à quelque chose d'un peu plus élégant, merci cependant, fonctionne bien. – Elric

3

Il n'y a pas de façon générale de le faire, mais spécifiquement pour UIActionSheet, vous n'avez pas besoin d'utiliser ce constructeur.

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 peut être initialisé de manière similaire.