У меня UITableView с чередующимися цветными UITableViewCells. И таблицу можно редактировать: строки можно переупорядочивать и удалять. Как обновить чередующийся фоновый цвет ячеек, когда строки переупорядочены или удалены?
Я использую это для рисования чередующихся цветных ячеек:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if ([indexPath row] % 2) {
// even row
cell.backgroundColor = evenColor;
} else {
// odd row
cell.backgroundColor = oddColor;
}
}
Но этот метод не вызывается, когда строка переупорядочивается или удаляется. И я не могу вызвать [tableView reloadData]
из следующего метода, потому что это приводит к сбою приложения в бесконечном цикле:
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
// Move the object in the array
id object = [[self.list objectAtIndex:[fromIndexPath row]] retain];
[self.list removeObjectAtIndex:[fromIndexPath row]];
[self.list insertObject:object atIndex:[toIndexPath row]];
[object release];
// Update the table ???
[tableView reloadData]; // Crashes the app in an infinite loop!!
}
Есть ли у кого-нибудь указатель или лучшее решение для решения проблемы изменения порядка чередующихся цветных ячеек?
Спасибо