@selector有多个参数

时间:2013-03-14 01:47:24

标签: objective-c methods uibutton arguments selector

好的,Objective-C: Calling selectors with multiple arguments有效,但我如何才能addTarget:action:forControlEvents:UIButton执行此操作?没有人withObject:我不认为......我该怎么做?

2 个答案:

答案 0 :(得分:1)

如果你想为UIButton传递多个句子,你应该通过Dictionary arugment

有两种方法可以处理它:

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

    - (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);
}