didSelectRowAt не вызывается - PullRequest
0 голосов
/ 13 июня 2019

У меня есть 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 голосов
/ 13 июня 2019

Я думаю, что кран проглотил содержимое моей камеры. То, что я хотел бы сделать, это использовать иерархию представления отладки, чтобы увидеть макет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...