2011-09-16 147 views
0

我在我的應用程序中有一個UITableView。從表格視圖中選擇一個單元格可以在頂部添加一個子視圖,用戶可以在其中編輯表格視圖單元格的內容。在用戶關閉子視圖後,使用UITableView實例方法reloadRowsAtIndexPaths重新加載已編輯的單元格:withRowAnimation:刷新UITableViewCell的Flash背景顏色

我希望編輯後的單元格將其contentView.background顏色作爲指示哪個單元剛更新的指示符。我知道UITableViewRowAnimation,但它並沒有給我我想要的效果。

任何有關完成此操作的最佳方法的建議?

回答

2

[tableview reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade]不能接受?

+1

謝謝你的ans WER。也許我會最終使用它,但我更喜歡讓backgroundColor閃爍一種我選擇的顏色。我也希望能夠控制動畫長度。 – Darren

+0

謝謝!我只是在尋找完全相反的東西,我的細胞閃爍,看到你的答案後,我意識到這是因爲UITableViewRowAnimationFade。 – user1046037

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回零的方法之後):

if (self.flashColor != nil) cell.backgroundColor = self.flashColor;