2009-06-20 9 views
16

A UIActionSheet wird initialisiert mit:Separate NSArray auf eine Liste von NSString Typ-Objekte

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Title" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil 
otherButtonTitles:@"Button1", @"Button2", nil]; 

Ich versuche, eine NSArray in die "otherButtonTitles" Nachricht zu übergeben.

Ich habe versucht, eine NSArray passieren mit:

otherButtonTitles:[array] 

aber die Nachricht eine Liste von NSStrings erwartet.

Die einzige Möglichkeit, wie ich ein NSArray in eine Reihe von NSStrings brechen kann, ist die Verwendung von ComponentsJoinedByString, aber es gibt mir eine durch Kommas getrennte Liste, die eine einzige NSString ist.

Ein Punkt in die richtige Richtung würde geschätzt werden.

+0

Wow ... gute Frage! Vielleicht ist das mit NSInvocation irgendwie möglich? –

Antwort

16

Diese Methode dauert Varargs. Es gibt keinen wirklich einfachen Weg, um die Umwandlung zu beschreiben, und es ist definitiv nicht die Mühe wert, in diesem Fall zu versuchen. Dies ist nur eine bequeme Methode.

Verwenden Sie einfach -init und konfiguriert alles mit dem Zugriffs- (-setDelegate:, -addButtonWithTitle:, -setCancelButtonIndex:, etc.)

+0

Siehe auch Brad Smiths Antwort bezüglich der Tastenanordnung bei der Verwendung des "addButtonWithTitle:" - Ansatzes (aber beachte, dass du * Sie müssen das UIActionSheet nicht ableiten, um dies zu verwenden, sie sind alle öffentliche Methoden): http://stackoverflow.com/questions/1262205/uactionsheet-addbuttonwithtitle-doesnt-add-buttons-in-the-right-order –

4

Leider you can't do this in Objective-C.

+0

Siehe http://www.cocoaithloth.com/2009/05/variable-argument-lists-in-cocoa.html –

Verwandte Themen