2010-11-14 13 views
5

Ich bin sicher, dass dies bereits irgendwo beantwortet werden muss, aber ich habe Mühe, die richtigen Suchbegriffe für die Antwort zu finden.Wie Elemente eines Arrays zu variadic Funktion übergeben?

In meinem objective-c-Code habe ich ein NSArray einer unbekannten Anzahl Strings, die ich seine Elemente an eine variadic init-Methode übergeben möchte, in diesem Fall ist es die Liste von 'otherButtonTitles' im Konstruktor von UIActionSheet . Wie kann dies erreicht werden?

Dank im Voraus

Antwort

3

Ich glaube, Sie das erste Element des Arrays an den Konstruktor übergeben müßten und dann die addButtonWithTitle Methode einer Schleife durch die übrigen Elemente verwenden und sie hinzufügen:

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

Ich denke, ich habe etwas etwas eleganter erwartet, aber danke, funktioniert gut. – Elric

3

Es gibt keine allgemeine Möglichkeit, dies zu tun, aber für UIActionSheet müssen Sie diesen Konstruktor nicht verwenden.

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 kann auf ähnliche Art und Weise initialisiert werden.

Verwandte Themen