Вы всегда должны сохранять статус checkMark в другом массиве или переменной. В случае, если может быть выбран только один элемент:
var SELECTED_ITEMS= [YOUR_DATA_TYPE]()//It must be global within tableViewController
в случае, если разрешен множественный выбор
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let item = self.studentsData[indexPath.row]
if SELECTED_ITEMS.contain(item){
SELECTED_ITEMS.remove(item)
}else{
SELECTED_ITEMS.append(item)
}
}
Помните, что SELECTED_ITEM должен быть массивом ваших данных таблицы, а SELECTED_ITEM - точно таким же типом вашей таблицы. данные. Также, если вы инициализируете свою модель в ViewDidLoad или ViewWillAppear в контроллере табличных представлений, make должна SELECTED_ITEMS
и SELECTED_ITEM
не сбрасываться при появлении табличного представления.
затем
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
........
cell.accessoryView = SELECTED_ITEMS.contain(item) ? .checkmark:.none// Multi Selection
.........
}
В общем,Вы обновляете свою модель, переменную или массив или все, что вписывается в ваш код, чтобы отслеживать, какой путь индекса выбран / не выбран. Затем в cellForRowAt вы можете проверить вышеуказанную переменную / массив ... для установки аксессуара.
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath){}
также будет работать