2009-06-20 18 views
16

Un UIActionSheet se initalized con:NSArray independiente a una lista de objetos de tipo NSString

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

Estoy tratando de pasar una NSArray en el mensaje "otherButtonTitles".

Me trataron de pasar una NSArray usando:

otherButtonTitles:[array] 

pero el mensaje está esperando una lista de NSStrings.

La única forma en que puedo pensar en dividir un NSArray en un conjunto de NSStrings es mediante el uso de componentsJoinedByString, pero me da una lista separada por comas que es un solo NSString.

Un punto en la dirección correcta sería apreciado.

+0

Wow ... buena pregunta! Tal vez usando NSInvocation esto es posible de alguna manera? –

Respuesta

16

Ese método toma varargs. No hay una forma realmente fácil de describir la conversión, y definitivamente no vale la pena intentarlo en este caso. Este es solo un método de conveniencia.

Sólo tiene que utilizar -init y configurar todo con los descriptores de acceso (-setDelegate:, -addButtonWithTitle:, -setCancelButtonIndex:, etc.)

+0

Consulte también la respuesta de Brad Smith con respecto al orden de los botones al usar el enfoque "addButtonWithTitle:" (pero indicando que usted * no * necesita subclasificar la Hoja de UIA para usar esto; todos son métodos públicos): http://stackoverflow.com/questions/1262205/uiactionsheet-addbuttonwithtitle-doesnt-add-buttons-in-the-right-order –

4

Desafortunadamente, you can't do this en Objective-C.

+0

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

Cuestiones relacionadas