在UITableViewCell的按钮单击功能中再添加一个参数



我的页面中有一个UITableView元素(ViewController(。我使用自定义的UITableViewCell作为UITableView

以下代码是用cellForRowAt函数编写的

cell.myButtonOutlet.addTarget(self, action: #selector(openDetailVC(_:)), for: .touchUpInside)

这里是我的页面中的openDetailVC函数(ViewController(;

@objc func openDetailVC(_ sender: UIButton)
{
}

我想在openDetailVc函数中再添加一个参数,如下所示。让我们用新名称编写新函数:openDetailVC2

@objc func openDetailVC2(_ sender: UIButton, myNewParameter: String)
{
}

如何在cellForRowAt函数中调用openDetailVC2函数?我试过如下,但它给出了一个错误:

cell.myButtonOutlet.addTarget(self, action: #selector(executeDetailVC2(_: , myNewParameter: "123456")), for: .touchUpInside)

(我知道我可以使用按钮发送器标签。但我想要求在openDetailVC中添加参数(

您不能更改选择器签名。只需创建一个自定义按钮,就这么简单:

class CustomButton : UIButton {
var parameter : String = ""
}
...
@IBOutlet weak var btn: CustomButton!
btn.parameter = "Param value"
...
@objc public func btnClick(_ sender: Any) {
var parameter : String = (sender as! CustomButton).parameter as? String
...
}

最新更新