我在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
}
}
}
最佳答案
您可以将第一部分中所有selectionStyle
的UITableViewCells
设置为.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
}
}