ios - 为 UIGestureRecognizer 选择器操作传递参数

标签 ios swift ios8 xcode6

我知道(并且已经在 SO 上找到了几篇文章)不能为选择器传递任何附加参数。例如,每当有人点击我的 ImageView 时,我就会发生以下情况:

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

这工作正常,许多解决方案都说如果你想传递一个参数,只需将 View 的标签分配给某物,然后在 tapImage 函数中将其作为发送者引用。问题是我实际上将标签值用于其他用途,因此需要以某种方式将另一个值存储在其他地方。

有哪些推荐方法可以将 true/false(或 0/1)值传递到我的 TapGestureRecognizer 操作“tapImage”以便我可以计算表达式?我还需要传递一组类。

我认为唯一的解决方案是在这种情况下使用不同的选择器(例如“tapImageFunctionA”与“tapImageFunctionB”这很好,但是在我走这条路之前还有另一种方法吗?即使是这样,我也会需要访问一组对象。也许我在 View Controller 中设置一个全局变量并以这种方式访问​​它?

非常感谢!

最佳答案

  1. 使用一些标记格式 - 例如位掩码,例如一种信息的低 16 位/第二种信息的高 16 位
  2. 使用associative references .以下是有关堆栈溢出的一些答案:How do I use objc_setAssociatedObject/objc_getAssociatedObject inside an object? , Any gotchas with objc_setAssociatedObject and objc_getAssociatedObject? .

就我个人而言,我会使用带有标签的第一个解决方案,以减少关联引用的性能开销(它非常小,但它存在)。此外,标签似乎更像是“编程”解决方案,而关联引用则更依赖于技术和实现。

关于ios - 为 UIGestureRecognizer 选择器操作传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25229036/

相关文章:

ios - 在 MixPanel 中禁用崩溃报告

ios - 设置对象 :forKey: of NSMutableDictionary overwrites all data in dictionary

像IOS一样的安卓年历

ios - 使用 Google SpreadSheet API 更新 iOS Swift 中的特定行

swift - 当从 tableviewcontroller 中的核心数据填充单元格行时,我如何跳过显示某些条目?

ios - 无法启用 iOS8 自定义键盘

ios - 如何在 iOS 的某些文件输入字段上获取 UIWebView 中的 UIImagePicker 选择的图像?

ios - Swift 字符串替换事件

ios - Xcode 旧版本不显示 'Alamofire' 及其在自动完成中的方法

ios - 电子邮件镇静 iOS 8