2010-11-14 3 views
5

Я уверен, что на это нужно ответить где-то уже, но я изо всех сил пытаюсь найти правильные условия поиска ответа.Как передать элементы массива в переменную функцию?

В моем объектно-кодовом коде у меня есть NSArray неизвестных строк чисел, которые я хочу передать своим элементам в метод вариационной инициализации, в этом случае его ... список «otherButtonTitles» в конструкторе UIActionSheet , Как это можно достичь?

заранее спасибо

ответ

3

Я думаю, что вы должны пройти первый элемент массива в конструкторе, а затем использовать метод addButtonWithTitle для перебора оставшихся элементов и добавить их:

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

Я предполагаю, что я ожидал чего-то более элегантного, спасибо, хотя, отлично работает. – Elric

3

Существует не общий способ сделать это, но специально для UIActionSheet вам не нужно использовать этот конструктор.

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 можно инициализировать аналогичным образом.