Search code examples
objective-cvariable-length

Objective-c - Passing in variables to a variable-length method


I've got an array with items, and I want to pass these in to a variable-length method. How do you do that?

I.e., I've got this (for example):

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];

But imagine that array could have a variable length of items, so you cant hardcode it like this.


Solution

  • The documentation for the otherButtonTitles parameter in -[UIAlertView initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:] states that:

    Using this argument is equivalent to invoking addButtonWithTitle: with this title to add more buttons.

    Have you tried this:

    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];
    }