【问题标题】:How to add a method with multiple parameters to the selector of a button如何将具有多个参数的方法添加到按钮的选择器
【发布时间】:2012-11-15 12:08:32
【问题描述】:

当我尝试将具有多个参数的方法添加到按钮的选择器时,由于未捕获的异常“NSInvalidArgumentException”而出现此错误正在终止应用程序

[viewButton addTarget:self action:@selector(loadDocument:inView:) withObject:cerereIndemnizatie.fisier withObject:self.myWebview forControlEvents:UIControlEventTouchUpInside];

这是方法

  -(void)loadDocument:(NSString*)documentName inView:(UIWebView*)webView
{
NSString *path = [[NSBundle mainBundle] pathForResource:documentName ofType:@"pdf"];
NSURL *url = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];

}

【问题讨论】:

    标签: button methods selector


    【解决方案1】:

    我不知道您为什么认为您可以这样做,或者为什么 UIButton 会响应 addTarget:selector:withObject:withObject:forControlEvents: 选择器...(说真的,不要猜测,请阅读文档...)

    您可以通过使用关联对象来实现类似的行为:

    UIButton *btn = // create the button
    objc_setAssociatedObject(btn, "firstObject", someObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    objc_setAssociatedObject(btn, "secondObject", otherObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    [btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
    
    - (void)click:(UIButton *)sender
    {
        id first = objc_getAssociatedObject(btn, "firstObject");
        id second = objc_setAssociatedObject(btn, "secondObject");
        // etc.
    }
    

    【讨论】:

      猜你喜欢
      • 2022-07-01
      • 2019-10-18
      • 1970-01-01
      • 2021-09-04
      • 2020-05-16
      • 1970-01-01
      • 2022-12-01
      • 2022-01-14
      • 2023-03-24
      相关资源
      最近更新 更多