UITableview返回不正确的索引路径行

时间:2019-02-19 18:39:45

标签: ios swift uitableview

对于设置屏幕,我有一个非常简单的5行表设置。每当单击第一个单元格时,它将突出显示但不会调用didselectrow。如果单击另一行,则该行将调用did选择功能,但返回错误的行。然后,我可以单击第一行,它将返回,但也有不正确的行。我在项目中建立了几个与此类似的表,但它们没有这种行为。单元格正确突出显示,所以我认为我没有布局/视图问题。我没有任何约束警告,当我使用viewdebugger时,没有遇到覆盖表格单元格的任何视图。感谢所有帮助!

let settingsArray:[String] = ["Notifications","Account","bar","Help","Privacy Policy"]

extension SettingsViewController: UITableViewDataSource,UITableViewDelegate {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return settingsArray.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        print("\(indexPath.row) setting \(settingsArray[indexPath.row])")
        if settingsArray[indexPath.row] != "bar" {
            let cell = tableView.dequeueReusableCell(withIdentifier: "settingOption") as! SettingsOptionCell
            cell.configure(setting: settingsArray[indexPath.row])
            self.settingsTable.rowHeight = 65
            cell.isUserInteractionEnabled = true
            return cell
        } else {
            let cell = tableView.dequeueReusableCell(withIdentifier: "settingBar")
            self.settingsTable.rowHeight = 70
            cell?.isUserInteractionEnabled = false
            return cell!
        }

    }

    func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
        print("clicked \(indexPath.row)")
}
}

1 个答案:

答案 0 :(得分:2)

替换

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {

使用

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {