使用 addTarget 调用时无法识别的选择器

Posted

技术标签:

【中文标题】使用 addTarget 调用时无法识别的选择器【英文标题】:unrecognized selector while calling using addTarget 【发布时间】:2013-02-27 09:03:07 【问题描述】:

我在自定义单元格按钮上使用 addTarget,例如:

[cell.btnGet addTarget:self action:@selector(getLocal:cell:) forControlEvents:UIControlEventTouchUpInside];

应该调用这个方法:

-(void)getLocal:(id)sender withcell:(GroupListCell *)cell

    // code for implement

但是当我点击按钮时,它会抛出如下错误:

2013-02-27 14:28:56.533 iosPlayer[704:11303] -[GroupView getLocal:cell:]: unrecognized selector sent to instance 0x72e1290
2013-02-27 14:28:56.534 iOSPlayer[704:11303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[GroupView getLocal:cell:]: unrecognized selector sent to instance 0x72e1290'

这里有什么问题?

【问题讨论】:

【参考方案1】:

试试这个:

[cell.btnGet addTarget:self action:@selector(getLocal:withcell:) forControlEvents:UIControlEventTouchUpInside];

【讨论】:

【参考方案2】:

那个动作方法被调用:

getLocal:withcell:

而不是:

getLocal:cell:

它也不匹配任何可接受的操作方法签名,它们是:

- (IBAction)doSomething;
- (IBAction)doSomething:(id)sender;
- (IBAction)action:(id)sender forEvent:(UIEvent *)event;

(见Apple guide)

【讨论】:

以上是关于使用 addTarget 调用时无法识别的选择器的主要内容,如果未能解决你的问题,请参考以下文章

UIRefreshControl addTarget 操作导致“无法识别的选择器”错误

行“addTarget ...”上无法识别的选择器,如何解决?

iPhone - 无法识别的选择器,“可能无法响应 addTarget”

Swift:发送到实例的无法识别的选择器

OCMock:为啥在尝试调用 UIWebView 模拟时会出现无法识别的选择器异常?

错误:使用类引用时无法识别的选择器