我确信这必须已经在某个地方得到解答,但我很难找到合适的搜索条件来解答答案。
在我的objective-c代码中,我有一个未知数字字符串的NSArray,我想将它的元素传递给一个可变参数的init方法,在这种情况下它是UIActionSheet的构造函数中的'otherButtonTitles'列表。如何实现这一目标?
提前致谢
答案 0 :(得分: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];
}
答案 1 :(得分: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可以用类似的方式初始化。