我的应用中有一个UITableView。从表视图中选择单元格会在顶部添加子视图,用户可以在其中编辑表格视图单元格的内容。在用户解除子视图后,使用UITableView实例方法reloadRowsAtIndexPaths:withRowAnimation重新加载编辑的单元格:
我希望编辑过的单元格将其contentView.background颜色闪烁,作为刚刚更新了哪个单元格的指示器。我知道UITableViewRowAnimation,但它没有给我我想要的效果。
有关实现此目标的最佳方法的任何建议吗?
答案 0 :(得分:2)
[tableview reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade]
是不可接受的吗?
答案 1 :(得分:1)
有点晚了,但我想我找到了一个很好的方法(仅举几个单元格作为例子):
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设置为nil):
if (self.flashColor != nil) cell.backgroundColor = self.flashColor;