-2

好的,所以Objective-C:使用多个参数调用选择器是可行的,但是我如何使用addTarget:action:forControlEvents:for a来做到这一点UIButton?没有一个withObject:我不认为... 我该怎么办?

4

2 回答 2

1

如果你想传递多个参数,UIButton你应该传递一个Dictionary参数

有两种处理方法:

  1. 您可以使用实例变量来保存要使用的值。

例如 :

- (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 回答