У меня была такая же проблема, мои решения:
TableViewController:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "testCell")! as! TestCell
// Turn off selection style for iOS12, iOS11, etc...
cell.selectionStyle = .none
return cell
}
Класс ячейки (у меня есть UIView внутри ContentView ячейки):
class TestCell: UITableViewCell {
@IBOutlet weak var testCellBackgroundView: UIView!
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
if selected {
contentView.backgroundColor = UIColor.white
testCellBackgroundView.backgroundColor = UIColor.red
} else {
contentView.backgroundColor = UIColor.white
testCellBackgroundView.backgroundColor = UIColor.green // default background color
}
}
// You may change highlighted color of a cell the same way
override func setHighlighted(_ highlighted: Bool, animated: Bool) {
super.setHighlighted(highlighted, animated: animated)
if highlighted {
contentView.backgroundColor = UIColor.white
testCellBackgroundView.backgroundColor = UIColor.red
} else {
contentView.backgroundColor = UIColor.white
testCellBackgroundView.backgroundColor = UIColor.green
}
}
}
Примечание: это мой первый ответ в stackoverflow, пожалуйста, проверьте, правильно ли он.