4 Stimmen

Objective-c - Übergabe von Variablen an eine Methode mit variabler Länge

Ich habe ein Array mit Elementen und möchte diese an eine Methode mit variabler Länge übergeben. Wie macht man das?

Das heißt, ich habe zum Beispiel das hier:

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

Aber stellen Sie sich vor, dass Array eine variable Länge von Elementen haben könnte, so dass Sie nicht hardcode es wie diese.

0 Stimmen

Warum übergeben Sie nicht einfach das Array? Die Methode wird dann in einer Schleife über das Array laufen und herausfinden, wie sie damit umgehen soll.

1 Stimmen

UIAlertView tut dies nicht.

16voto

mipadi Punkte 377834

Die Dokumentation für das otherButtonTitles Parameter in -[UIAlertView initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:] heißt es:

Die Verwendung dieses Arguments ist gleichbedeutend mit dem Aufruf von addButtonWithTitle: mit diesem Titel, um weitere Schaltflächen hinzuzufügen.

Haben Sie das schon probiert?

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

4voto

Luuk van Rens Punkte 86
- (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);
}

Sie könnten auch einfach ein Argument in Ihre Funktionen aufnehmen, das ein Array akzeptiert (einfache Lösung)

Die Notation ... steht für eine variable Anzahl von Argumenten am Ende einer Funktion.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X