2010-11-14 46 views
5

Jestem pewien, że należy już gdzieś odpowiedzieć, ale staram się znaleźć odpowiednie warunki wyszukiwania dla odpowiedzi.Jak przekazywać elementy tablicy do funkcji variadic?

W moim kodzie celu-C mam NSArray z nieznanych ciągów liczb, które chcę przekazać jego elementy do metody init variadic, w tym przypadku jest to ... lista 'otherButtonTitles' w konstruktorze UIActionSheet . Jak można to osiągnąć?

góry dzięki

Odpowiedz

3

myślę, że trzeba zdać pierwszy element tablicy do konstruktora, a następnie użyć metody addButtonWithTitle pętli pozostałych elementów i dodać je:

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

Chyba oczekiwałem czegoś nieco bardziej eleganckiego, dzięki, działa dobrze. – Elric

3

Nie ma na to ogólnego sposobu, ale specjalnie dla UIActionSheet nie trzeba używać tego konstruktora.

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 można zainicjować w podobny sposób.

Powiązane problemy