我有一个带有这样的按钮的表视图单元格
let downButton: UIButton = {
let button = UIButton()
button.translatesAutoresizingMaskIntoConstraints = false
button.addTarget(self, action: #selector(exe), for: .touchUpInside)
return button
}()
@objc func exe(product: Product) {
print("AEADSFADSF")
}
该按钮已添加为子视图并正确显示,但不执行添加到其目标的功能。如果我在Table View Controller上有一个名为exe的函数,它将执行。我该如何进行这项工作?我需要将产品作为参数的函数。
答案 0 :(得分:0)
您应该将exe(product:)
函数更改为:
@objc func exe() {
print("AEADSFADSF")
}
如果要检测在表格视图中按下了哪个按钮,可以使用detecting uibutton pressed in tableview: Swift Best Practices
中描述的方法答案 1 :(得分:0)
我认为问题在于您的self
函数中的addTarget
不是指向周围的实例,而是指向闭包本身。尝试将按钮设置为lazy var
:
lazy var downButton: UIButton = {
let button = UIButton()
button.translatesAutoresizingMaskIntoConstraints = false
button.addTarget(self, action: #selector(exe), for: .touchUpInside)
return button
}()
“证明”:
let downButton: UIButton = {
...
print(self)
...
}()
打印:(Function)
lazy var downButton: UIButton = {
...
print(self)
...
}()
打印:<ScreenSize.ViewController: 0x7fc0cf4060f0>