使用带有两个参数的UIButton addTarget时无法识别的选择器

时间:2012-11-14 00:18:18

标签: iphone objective-c ios mapkit

当我尝试链接到我的UIButton的方法只有一个参数时,我可以调用addTarget并在单击按钮时成功运行代码 -

[ myDetailButton addTarget:self action:@selector(hideMap:) forControlEvents:UIControlEventTouchUpInside];

(void)hideMap:(NSMutableArray*)arguments

但如果我向hideMap方法添加第二个参数,则在调用它时会出现无法识别的选择器错误:

[ myDetailButton addTarget:self action:@selector(hideMap:) forControlEvents:UIControlEventTouchUpInside];

(void)hideMap:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options

无论我如何格式化addTarget参数,我都会看到此错误,每this question -

action:@selector(hideMap)
action:@selector(hideMap:)
action:@selector(hideMap:event:)

如何使用addTarget调用具有多个参数的方法?

2 个答案:

答案 0 :(得分:2)

你的问题是你正在给一个期望NSMutableArray作为输入的选择器和一个字典。 UIButton不同意这一点。根据你链接的帖子,UIBUtton只同意发送任何内容,本身作为id,或者本身和事件。

我不是100%肯定你期望从UIButton回调获得NSMutableArray和NSMutableDictionary,你在这里想要实现的是什么,我或许可以建议一些帮助。

答案 1 :(得分:1)

问题是你的方法是:

-(void)hideMap:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options

方法名称为hideMap:withDict:而不是hideMap:event:

将此代码action:@selector(hideMap:event:)更改为action:@selector(hideMap:withDict:),它将解决您的问题。

没有像hideMap:event:这样的问题。