0

当我试图链接到我的 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 参数,我都会看到这个错误——

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

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

4

2 回答 2

2

您的问题是您提供了一个选择器,该选择器期望 NSMutableArray 作为输入以及字典。UIButton 不同意这一点。根据您链接到的帖子,UIBUtton 只同意发送任何内容、本身作为 id 或自身和事件。

我不是 100% 确定您期望如何从 UIButton 回调中获取 NSMutableArray 和 NSMutableDictionary,您在这里想要实现的究竟是什么,我可能会提供一些帮助。

于 2012-11-14T00:25:37.647 回答
1

问题是你的方法是:

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

而且方法名hideMap:withDict:不是hideMap:event:

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

没有像这样的方法:hideMap:event:这就是问题所在。

于 2012-11-14T04:34:55.513 回答