传递参数给UIGestureRecognizer选择器动作

3

我知道(并在这里的几篇帖子中找到了)不能为选择器传递任何其他参数。例如,每当有人点击我的图像视图时,会发生以下情况:

 imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action:Selector("tapImage:")))

这个代码可以正常运行,许多解决方案建议如果想传递参数,只需将视图的标签分配给某个值,然后在tapImage函数中引用该值作为发送者。问题是我实际上正在使用标签值来做其他事情,所以需要在其他地方存储另一个值。
有哪些推荐的方法可以将true/false(或0/1)值传递到我的TapGestureRecognizer动作“tapImage”中,以便我可以评估表达式?我还需要传递一系列类。
我认为唯一的解决方案是在这种情况下使用不同的选择器(例如“tapImageFunctionA”与“tapImageFunctionB”),这很好,但在采取此路线之前是否有其他方法?即使采用这种方式,我也需要访问一组对象。也许我在视图控制器中设置全局变量并以这种方式访问它?
非常感谢!
1个回答

0
使用一些标记格式,例如位掩码,如16个低位表示一种信息/ 16个高位表示第二种信息。
使用关联引用。这里有一些关于这个的答案在stack overflow上:如何在对象内部使用objc_setAssociatedObject / objc_getAssociatedObject?, 使用objc_setAssociatedObject和objc_getAssociatedObject有什么要注意的地方吗?
个人认为会使用带有标记的第一种解决方案,以减少关联引用的性能开销(开销非常小,但确实存在)。此外,标记似乎是更“编程”解决方案,而关联引用则更加技术和实现相关。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接