重载时UITableViewCell的Flash背景颜色

时间:2011-09-16 02:19:30

标签: ios uitableview uikit

我的应用中有一个UITableView。从表视图中选择单元格会在顶部添加子视图,用户可以在其中编辑表格视图单元格的内容。在用户解除子视图后,使用UITableView实例方法reloadRowsAtIndexPaths:withRowAnimation重新加载编辑的单元格:

我希望编辑过的单元格将其contentView.background颜色闪烁,作为刚刚更新了哪个单元格的指示器。我知道UITableViewRowAnimation,但它没有给我我想要的效果。

有关实现此目标的最佳方法的任何建议吗?

2 个答案:

答案 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;
相关问题