ios - 带有两个参数的快速选择器未触发

标签 ios swift

我正在尝试使用带有两个参数的选择器

我为此使用了这段代码

func yourButtonClicked(sender : AnyObject, rcd :  NSManagedObject)
{ }

我必须传递参数record1

cell.btn.addTarget(self, action: #selector(yourButtonClicked(_:record1)), forControlEvents: UIControlEvents.TouchUpInside)

它显示错误 missing arg rcd in call

有人能纠正我吗?

最佳答案

当您在 addTarget 方法中设置选择器时,您只是在告诉您的对象它应该在“target”对象中搜索具有给定参数名称签名的“action”方法,并在事件发生时调用它。您无法提供应在调用中用作参数的属性或变量。如果你会阅读docUIControl 为例,您会发现 addTarget 方法只允许对您的操作进行三个签名。

要解决您的问题,您可以声明属性并在您的操作中使用它:

var rcd: NSManagedObject!
func yourButtonClicked(sender : AnyObject) {
    //use rcd property, keeping it in actual state
}

func someMethod() {
    rcd = record1
    cell.btn.addTarget(self, action: #selector(yourButtonClicked(_:)), forControlEvents: .TouchUpInside)
}

关于ios - 带有两个参数的快速选择器未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38845394/

相关文章:

ios - NavBar 的颜色与背景颜色不同

swift - 在 Swift 中需要类似的函数 strtotime ("next monday")

swift - 在 Xcode 8 中将单个文件转换为 Swift 3?

iOS 6.0 限制导航 Controller 内的自动旋转?

ios - 无法接收任何弹出窗口或用户登录提示

ios - 布局管理器 boundingRectForGlyphRange :inTextContainer: does not work for all strings

ios - 代码滚动到 TableView 中的下一行?

ios - 不是目录@rb_sysopen -/usr/local/bin/fuzzy_match

快速创建物理关节

ios - 未从 Collection View 调用 prepareForSegue