我需要通过单击tableViewCell来触发一个函数, 到目前为止我使用了@IBAction,但该选项仅适用于按钮类型(我还没有找到另一种方式..) 这就是我现在的方式:
@IBAction func springPrs(_ sender: Any) {
//doing stuff..
}
但现在我有@IBOutlet
@IBOutlet weak var nextTrackCell: nextTableViewCell!
我想点击它来触发一个功能。有什么帮助吗?
答案 0 :(得分:1)
这是一种错误的方法,您应该从名为UITableViewDelegate
的{{1}}实施委托方法:
didSelectRowAt
答案 1 :(得分:0)
您不应该直接向表格视图单元格添加操作,因为它违反了MVC设计模式,并且UITableViewDelegate
中已经内置了一个方便的回调,以使其变得非常简单。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row == 0 {
// do something when the top row tapped
} else {
// do something when any other row is tapped
}
}
答案 2 :(得分:0)
您还可以在单元格内部声明一个闭包,这是我在必须将某些操作传递给视图控制器时倾向于使用的闭包。
var onButtonPressed: (() -> ())?
@IBAction func buttonPressed(_ sender: Any) {
onButtonPressed?()
}
在cellForRowAt
中像这样使用它:
cell.onButtonPressed = { [unowned self] in
// Do what you need to, no need to capture self however, if you won't access it.
}