Пытаюсь сделать то же самое, но я вижу «выбранную» галочку в других строках, которые никогда не были выделены при прокрутке списка вниз.Кроме того, отмена выбора одного из «фантомных» элементов в списке приводит к тому, что аксессуар исчезает в верхней части списка - но массив не изменяется.
Вот как я его реализовал:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
if ([selectedCell accessoryType] == UITableViewCellAccessoryNone) {
[selectedCell setAccessoryType:UITableViewCellAccessoryCheckmark];
[selectedIndexes addObject:[NSNumber numberWithInt:indexPath.row]];
NSLog(@"IVC selectedIndexes AddObject @ %d:", indexPath.row);
NSLog(@"IVC selectedIndexes: %@", selectedIndexes);
} else {
[selectedCell setAccessoryType:UITableViewCellAccessoryNone];
[selectedIndexes removeObject:[NSNumber numberWithInt:indexPath.row]];
NSLog(@"IVC selectedIndexes RemoveObject @ %d:", indexPath.row);
}
[tableView deselectRowAtIndexPath:indexPath animated:NO];
}
РЕДАКТИРОВАТЬ: Добавлено решение: Вы должны вставить это в свой код "cellForRowAtIndexPath":
if ([selectedIndexes containsObject:[NSNumber numberWithInt:indexPath.row]]) [cell setAccessoryType:UITableViewCellAccessoryCheckmark];