我的页面中有一个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
...
}