gpt4 book ai didi

swift - didSelectRowAt 没有被调用

转载 作者:行者123 更新时间:2023-11-30 10:42:01 24 4
gpt4 key购买 nike

我有一个 tableView,我设置了委托(delegate)和数据源,但是当点击单元格时,didSelectRowAt 函数没有被调用。这是我的代码:

private let reuseIdentifier = "DropdownCell"

extension ReportVC: UITableViewDelegate, UITableViewDataSource {


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return showMenu ? companies.count : .zero //If show menu is true the tableView needs to be shown, so we are returning the number of companies in the array, if the show menu is flase the tableView does NOT needs to be shown, so we are returning zero.
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier, for: indexPath) as! CompanyCell
cell.companyNameLabel.text = companies[indexPath.row]

let bgColorView = UIView()
bgColorView.backgroundColor = UIColor.appBlueAccent

cell.selectedBackgroundView = bgColorView

return cell
}

//TODO: add arrow to indicate the dropdown list, adjust the select company label to the side of the screen
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let button = UIButton(type: .system)
button.setTitle("Select Company", for: .normal)
button.setTitleColor(UIColor.appWhite, for: .normal)
button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 14)
button.addTarget(self, action: #selector(handleDropDown), for: .touchUpInside)
button.backgroundColor = UIColor.appBlueAccent

return button
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print(indexPath.row)
}

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

func configureTableView(){
tableView = UITableView()
tableView.translatesAutoresizingMaskIntoConstraints = false
tableView.isScrollEnabled = false
tableView.rowHeight = 50
tableView.separatorStyle = .none
tableView.backgroundColor = UIColor.appWhite
tableView.delegate = self
tableView.dataSource = self

tableView.register(CompanyCell.self, forCellReuseIdentifier: reuseIdentifier)

view.addSubview(tableView)
NSLayoutConstraint.activate([
tableView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 0),
tableView.leftAnchor.constraint(equalTo: view.leftAnchor),
tableView.rightAnchor.constraint(equalTo: view.rightAnchor),
tableView.heightAnchor.constraint(equalToConstant: 250),

])
}


@objc func handleDropDown(){

showMenu = !showMenu
var indexPaths = [IndexPath]()

for i in 0..<companies.count{
let indexPath = IndexPath(row: i, section: 0)
indexPaths.append(indexPath)
}

if showMenu {
tableView.insertRows(at: indexPaths, with: .automatic)
}else{
tableView.deleteRows(at: indexPaths, with: .automatic)
}

}
}

这是我的 ReportVC 的扩展,在报告 VC 中,我调用 configureTableView 并设置 showMenu 和 tableView 变量。我尝试打印 indexPath 或者实际上只是打印一个字符串来查看 didSelectRowAt 是否被调用,但没有任何反应。

最佳答案

我认为水龙头正在吞噬我的细胞内容物。我要做的是使用调试 View 层次结构来查看布局。

关于swift - didSelectRowAt 没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56586893/

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