好吧,所以我有一个带有UITableView
的ViewController。在继续编码之前,我读到为了从按钮获取动作或拥有自定义单元格,您可以使用标签或使用协议和放大器使用更清晰的解决方案。与会代表。显然我选择了后者。
现在当我在我的班级UITableViewCell
中使用名为TableViewCellsDelegate
的自定义ViewController
时,我需要在下面的代码中将其替换为UITableViewDelegate,如您所见:
class ViewController: UIViewController , UITableViewDataSource, TableViewCellsDelegate{} ....
我的问题是我有这个功能现在没有被调用:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("in here")
if indexPath.row == 0 {
if dateCellExpanded {
dateCellExpanded = false
} else {
dateCellExpanded = true
}
tableView.beginUpdates()
tableView.endUpdates()
}
}
我怀疑如果您选择使用自定义UITableViewCell,则会丢失一些委托功能。必须有一些解决方案。这是我的TableViewCellsDelegate
protocol TableViewCellsDelegate : class {
func bookTapped(_ sender: UIButton)
func unbookTapped(_ sender: UIButton)
}
class TableViewCells: UITableViewCell {
@IBOutlet var bookButtonProperties: UIButton!
@IBOutlet var unbookButtonProperties: UIButton!
@IBOutlet var nameField: UITextField!
@IBOutlet var numberField: UITextField!
weak var delegate: TableViewCellsDelegate?
@IBAction func bookPressed(_ sender: UIButton) {
delegate?.bookTapped(sender)
}
@IBAction func unbookPressed(_ sender: UIButton) {
delegate?.unbookTapped(sender)
}
}
答案 0 :(得分:1)
您需要使用UITableViewDelegate代替TableViewCellsDelegate来处理didSelectRowAt。
如果您有任何问题,请回复。