На основании ответа PGDev вам нужно свойство в контроллере представления, чтобы сохранить выбранный путь индекса
var selectedIndexPath : IndexPath?
Если строка не выбрана, свойство равно nil
В cellForRow
добавьте строку для управления выбором
cell.isSelected = indexPath == selectedIndexPath
В didSelectRowAt
сравните только что выбранный путь индекса с selectedIndexPath
, обновите selectedIndexPath
и перезагрузите строки соответствующим образом.
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
var pathsToReload = [indexPath]
if let selectedPath = selectedIndexPath {
if indexPath == selectedPath { // deselect current row
selectedIndexPath == nil
} else { // deselect previous row, select current row
pathsToReload.append(selectedPath)
selectedIndexPath = indexPath
}
} else { // select current row
selectedIndexPath == indexPath
}
tableView.reloadRows(at: pathsToReload, with: .automatic)
}