好的,Objective-C: Calling selectors with multiple arguments有效,但我如何才能addTarget:action:forControlEvents:
为UIButton
执行此操作?没有人withObject:
我不认为......我该怎么做?
答案 0 :(得分:1)
如果你想为UIButton
传递多个句子,你应该通过Dictionary
arugment
有两种方法可以处理它:
例如:
- (void)buttonPressed:(id)sender
{
NSMutableDictionary *argDictionary = _ivar;
}
2.您可以使用某个类别伪造财产。
如何伪造类别中的属性,您可以看到:http://oleb.net/blog/2011/05/faking-ivars-in-objc-categories-with-associative-references/
然后你可以使用:
- (void)buttonPressed:(UIButton *)sender
{
// use sender.argDictionary to get your fake property
}
您可以看到更多信息my answer before
答案 1 :(得分:0)
一种可能性是创建一个自定义UIButton扩展接口,其中包含您需要传递的所有属性,在创建按钮时设置该按钮的属性,然后在调用该操作后访问它。例如:
@interface UIButton (additions)
@property NSString * customPropertyString;
@end
然后,以通常的方式添加目标和选择器:
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
最后,处理程序方法的实现:
- (void)buttonPressed:(id)sender
{
UIButton * senderButton = (UIButton *)sender;
NSLog(@"%@", senderButton.customPropertyString);
}