我在VC中有一个UITableView,基本上我想要的是它的第一部分不可篡改。但是我不能使用isUserInteractionEnabled因为我在本节的每一行中都有UISwitch。将selectionStyle设置为.none不会改变任何内容。我只能在接口检查器中选择No Selection来禁用这些行,但是它将禁用整个表。我该怎么办?

编辑

这是我自定义的单元格类

class CustomCell: UITableViewCell {
    override func setHighlighted(_ highlighted: Bool, animated: Bool) {

        if highlighted {
            self.backgroundColor = ColorConstants.onTapColor
        } else {
            self.backgroundColor = .clear
        }
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        if selected {
            self.backgroundColor = ColorConstants.onTapColor
        } else {
            self.backgroundColor = .clear
        }
    }

}

最佳答案

您可以将第一部分中所有selectionStyleUITableViewCells设置为.none,如下所示:

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

    if indexPath.section == 0 {
        cell.selectionStyle = .none
    } else {
        cell.selectionStyle = .default
    }

    return cell
}

然后在didSelectRowAtIndexPath()方法中,您可以检查if (indexPath.section != YOURSECTION):
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if indexPath.section == 0 {
        // DO NITHING
    } else {
        // DO WHATEVER YOU WANT TO DO WITH THE CELLS IN YOUR OTHER SECTIONS
    }
}

10-05 20:03