Немного поздно, но я думаю, что нашел хороший способ сделать это (просто взяв в качестве примера первую ячейку):
NSArray* cells = [self.tableView visibleCells];
UITableViewCell* cell = [cells objectAtIndex:0];
NSIndexPath* path = [self.tableView indexPathForCell:cell];
for (int i = 0; i <= 20; i++)
{
UIColor* color = nil;
if (i % 2 == 0)
{
color = [UIColor whiteColor];
}
else
{
color = [UIColor grayColor];
}
NSMutableArray* stuff = [[NSMutableArray alloc] initWithCapacity:2];
NSArray* rowsToReload = [NSArray arrayWithObjects:path, nil];
[stuff addObject:rowsToReload];
[stuff addObject:color];
[self performSelector:@selector(flash:) withObject:stuff afterDelay:i * .2];
}
И есть этот метод:
-(void)flash:(NSMutableArray*)stuff
{
NSArray* rowsToReload = [stuff objectAtIndex:0];
self.flashColor = [stuff objectAtIndex:1];
[self.tableView reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone];
}
Затем в вашем cellForRowAtIndexPath (вы, вероятно, хотите что-то после этого метода, который устанавливает flashColor обратно в ноль):
if (self.flashColor != nil) cell.backgroundColor = self.flashColor;