我可以用@selector为UIButton传递一个数组参数吗?

Hem*_*ang 2 action arguments objective-c selector ios

UIButton想在其中添加一个存储到的目标动作NSArray.

我想要的东西,

- (IBAction) myAction
{
    //Do Something
}

 //Add myAction to myArray
[myArray addObject:myAction]; 

 //Add target on myButton
[myButton addTarget:self action:@selector([myArray objectAtIndex:0]) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

我正在尝试它,但它显示错误消息,如,Expected IdentifierExpected ]

可能吗?有没有办法做到这一点?

yuj*_*uji 8

如果myArrayNSStrings要用作选择器的数组,则可以使用NSSelectorFromString:

[myButton addTarget:self action:NSSelectorFromString([myArray objectAtIndex:0]) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

或者,如果要在a中存储选择器NSArray,则必须将它们包装在一个中,NSValue因为a SEL不是Objective-C对象:

NSValue* selCommandA = [NSValue valueWithPointer:@selector(handleCommandA:)];
NSValue* selCommandB = [NSValue valueWithPointer:@selector(handleCommandB:)];

NSArray *handlers = [NSArray arrayWithObjects:selCommandA, selCommandB, nil ];

SEL mySelector = [[handlers objectAtIndex:0] pointerValue];
[myButton addTarget:self action:mySelector forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)