表格视图单元格不执行功能

时间:2018-12-12 16:49:30

标签: ios swift uitableview

我有一个带有这样的按钮的表视图单元格

    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的函数,它将执行。我该如何进行这项工作?我需要将产品作为参数的函数。

2 个答案:

答案 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>