SWIFT 4, XCODE 9, IOS 11
После некоторого тестирования это WILL удаляет цвет фона, если отменить выделение или коснуться ячейки второй раз, когда в табличном представлении Selection установлено значение "Multiple Selection". Также работает, когда для стиля табличного представления установлено значение "Сгруппировано".
extension ViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let cell = tableView.cellForRow(at: indexPath) {
cell.contentView.backgroundColor = UIColor.darkGray
}
}
}
Примечание. Чтобы это работало, как показано ниже, свойству Selection вашей ячейки можно присвоить любое значение НО.
Как это выглядит с разными вариантами
Стиль: Обычный , Выбор: Одиночный выбор
Стиль: Обычный , Выбор: Множественный выбор
Стиль: Сгруппированный , Выбор: Множественный выбор
Бонус - Анимация
Для более плавного перехода цвета попробуйте анимацию:
extension ViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let cell = tableView.cellForRow(at: indexPath) {
UIView.animate(withDuration: 0.3, animations: {
cell.contentView.backgroundColor = UIColor.darkGray
})
}
}
}
Бонус - изменение текста и изображения
Вы можете заметить, что значок и цвет текста также меняются при выборе ячейки. Это происходит автоматически, когда вы устанавливаете свойства UIImage и UILabel Highlighted
UIImage
- Поставляем два цветных изображения:
- Установить свойство выделенного изображения:
UILabel
Просто укажите цвет для выделенного объекта: