Для таблицы с одним разделом вы можете использовать selectedIndexPath
для сохранения выбранного indexPath. Для просмотра таблицы из нескольких разделов вам нужен массив indexPaths
var selectedIndexPathArr: [IndexPath?] = Array(repeating: nil, count: 3)//3 is number of sections
Затем в методе didSelect сохранить выбранный indexpath в своем разделе index
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
selectedIndexPathArr[indexPath.section] = indexPath//save selected indexpath depends section
tableView.reloadData()
}
В методе didDeselectRowAt удаляет запечатанный путь индекса из массива
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
selectedIndexPathArr[indexPath.section] = nil//delete selected indexpath depends section
tableView.reloadData()
}
В методе cellForRowAt сравнение текущего пути индекса с путем индекса из массива зависит от текущего раздела
if selectedIndexPathArr[indexPath.section] == indexPath {
cell?.imageView?.image = UIImage.init(named: "radio2")//Selected state
} else {
cell?.imageView?.image = UIImage.init(named: "radio1")//Deselected state
}
![enter image description here](https://i.stack.imgur.com/mrk8D.gif)
Затем вы можете получить выбранный путь индекса для каждого раздела
Вы получите nil
, если в конкретном разделе не выбрана ячейка
print(selectedIndexPathArr[0])//first section selected indexpath
print(selectedIndexPathArr[1])//second section selected indexpath
print(selectedIndexPathArr[2])//third section selected indexpath