didSelectRowAt没有被调用

时间:2019-06-13 18:49:59

标签: swift

我有一个tableView,我设置了委托和数据源,但是当点击一个单元格时,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是否被调用,但是什么也没发生。

1 个答案:

答案 0 :(得分:0)

我在想水龙头吞没了我单元的内容。我要做的是使用“调试视图层次结构”来查看布局。