好的,所以Objective-C:使用多个参数调用选择器是可行的,但是我如何使用addTarget:action:forControlEvents:
for a来做到这一点UIButton
?没有一个withObject:
我不认为... 我该怎么办?
问问题
225 次
2 回答
1
如果你想传递多个参数,UIButton
你应该传递一个Dictionary
参数
有两种处理方法:
- 您可以使用实例变量来保存要使用的值。
例如 :
- (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
}
更多信息你可以看到我之前的回答
于 2013-03-14T05:25:45.537 回答
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);
}
于 2013-03-14T01:56:59.287 回答