我有一个包含项目的数组,我想将它们传递给一个可变长度的方法。你是怎么做到的?
即,我有这个(例如):
NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
[[UIAlertView alloc] initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:[array objectAtIndex:0] otherButtonTitles:[array objectAtIndex:1], [array objectAtIndex:2], nil];
但是想象一下,数组可能有一个可变长度的项目,所以你不能像这样硬编码。
答案 0 :(得分:16)
otherButtonTitles
中-[UIAlertView initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:]
参数的文档说明:
使用此参数相当于调用addButtonWithTitle:使用此标题添加更多按钮。
你试过这个:
NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
UIAlertView *view = [[UIAlertView alloc] initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:@"cancel" otherButtonTitles:nil];
for (NSString *s in array) {
[view addButtonWithTitle:s];
}
答案 1 :(得分:4)
- (id) initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles ...
{
va_list args;
va_start(args, otherButtonTitles);
for (NSString *arg = otherButtonTitles; arg != nil; arg = va_arg(args, NSString*))
{
//do something with nsstring
}
va_end(args);
}
您也可以在函数中创建一个接受数组的参数(简单解决方案)
无论如何,......符号表示函数末尾的可变数量的参数。