ios – 在Swift中将参数传递给选择器

ios – 在Swift中将参数传递给选择器,第1张

概述我是以编程方式将UITapGestureRecognizer添加到我的一个视图中: let gesture = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(modelObj:myModelObj)))self.imageView.addGestureRecognizer(gesture)func 我是以编程方式将UITapGestureRecognizer添加到我的一个视图中:

let gesture = UITapGestureRecognizer(target: self,action: #selector(self.handleTap(modelObj:myModelObj)))self.imageVIEw.addGestureRecognizer(gesture)func handleTap(modelObj: Model) {  // Doing stuff with model object here}

我遇到的第一个问题是“#selector’的参数’没有引用’@Objc’方法,属性或初始值设定项.

很酷,所以我将@objc添加到handleTap签名:

@objc func handleTap(modelObj: Model) {  // Doing stuff with model object here}

现在我收到错误“方法无法标记为@objc,因为参数的类型无法在Objective-C中表示.

它只是建筑物地图的图像,其中一些图像指示了兴趣点的位置.当用户点击这些引脚中的一个时,我想知道他们挖掘了哪个兴趣点,并且我有一个描述这些兴趣点的模型对象.我使用这个模型对象给它在地图上的坐标图像,所以我认为将对象发送到手势处理程序是很容易的.

解决方法 看起来你误解了一些事情.

使用target/action时,功能签名必须具有某种形式……

func doSomething(sender: Any)

要么

func doSomething(sender: Any,forEvent event: UIEvent)

哪里…

The sender parameter is the control object sending the action message.

在您的情况下,发件人是UITapGestureRecognizer

此外,#selector()应包含func签名,并且不包含传递的参数.因此对于…

func handleTap(sender: UIGestureRecognizer) {}

你应该有…

let gesture = UITapGestureRecognizer(target: self,action: #selector(handleTap(sender:)))

假设func和手势在一个视图控制器中,其中modelObj是属性/ ivar,没有必要用手势识别器传递它,你可以在handleTap中引用它

总结

以上是内存溢出为你收集整理的ios – 在Swift中将参数传递给选择器全部内容,希望文章能够帮你解决ios – 在Swift中将参数传递给选择器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1019813.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存