Вы можете отслеживать текущий выбранный элемент в свойстве класса типа NSIndexPath
.Прежде всего инициализируйте это свойство nil
или любым другим значением, которое было выбрано ранее.Вы также можете исправить свой cellForRowAtIndexPath
, чтобы сравнить indexPath ячейки со «выбранным в данный момент» свойством пути индекса и добавить галочку там, если они совпадают.Теперь все, что вам нужно сделать в didSelectRowAtIndexPath
, примерно так (код, не проверенный компилятором, может содержать небольшие ошибки):
NSIndexPath *oldIndexPath = self.selectedIndexPath; // retain this if not using ARC!
self.selectedIndexPath = indexPath; // passed in from didSelectRowAtIndexPath
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects: oldIndexPath, self.selectedIndexPath, nil], UITableViewRowAnimationNone];
// release oldIndexpath if noct using ARC
Поскольку cellForRowAtIndexPath
должен создать ячейку с галочкой или без неев зависимости от self.selectedIndexPath
это соответствующим образом обновит ячейки (а также создаст правильный вид в начале, если что-то уже должно быть выбрано).
Бонус: у вас есть self.selectedIndexPath
, чтобы определить, к чему следует вернуться"вызывающий" вид, т.е. какая строка выбрана.