gpt4 book ai didi

ios - 自定义 UITableView 中未调用 didSelectRowAt

转载 作者:行者123 更新时间:2023-11-28 16:08:36 25 4
gpt4 key购买 nike

经过一些重构后,我决定创建一个看起来有点像的自定义 tableview:

class BaseTable: UITableView, UITableViewDelegate, UITableViewDataSource {

var rowsInSection: Int { return 0}

required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!

self.delegate = self
self.dataSource = self
self.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
}

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {

}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return rowsInSection
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)

return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.deselectRow(at: indexPath, animated: true)
}

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "headerCell")!
return cell
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 40
}

然后我像这样对其进行子类化:

class CustomTable: BaseTable{
override var rowsInSection: Int {return payArray.count }
}

这工作正常,但我注意到没有子类 didSelectRowAt 被调用???谁能帮忙?

最佳答案

那么,你应该遵循以下几点:

  1. 您应该将逻辑从 initWithCoder: 拆分到外部方法,例如并在 initWithFrame: 中调用它,因为不同的方法调用不同的 init方法。比如

func setUpTableView() {
self.delegate = self
self.dataSource = self
self.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
}

  1. 为了代码清晰,您应该从子类方法中显式调用super方法
  2. 否则,我强烈建议您不要使用这种方法,最好在 Controller 中使用标准 UITableView,以及实现协议(protocol)和自定义 UITableViewCell 的不同类

关于ios - 自定义 UITableView 中未调用 didSelectRowAt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39884035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com