2011-08-11 64 views
1

添加或刪除單元格後,只有我添加或刪除的單元格被重新加載。在添加或刪除新單元格後,我需要重新加載所有單元格。如何在添加或刪除單元格後重新加載所有表格單元格?

我知道[self.tableView reloadData],但如果我在添加或刪除單元格後調用它,它會切割單元格添加/刪除動畫。

我其實已經想出了一種方法來解決這個問題,但它有點晦暗,我想有可能有更好的方法。這就是我現在做的事:如果

[self.tableView deleteRowsAtIndexPaths:row_to_delete withRowAnimation:UITableViewRowAnimationRight]; 

double delayInSeconds = .25; 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    [self.tableView reloadData]; 
}); 

回答

1

呼叫beginUpdates你想後續插入,刪除和選擇操作(例如,的cellForRowAtIndexPath:和indexPathsForVisibleRows)可以同時動畫。這組方法必須以endUpdates的調用結束。這些方法對可以嵌套。如果您不在該塊內進行插入,刪除和選擇調用,則表格屬性(如行計數)可能會失效。你不應該在組中調用reloadData;如果您在組中調用此方法,則需要自己執行任何動畫。

[self.tableView beginUpdates]; 
[self.tableView deleteRowsAtIndexPaths:row_to_delete withRowAnimation:UITableViewRowAnimationRight]; 
[self.tableView endUpdates]; 
1

也許你可以使用這個方法的tableView:

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 

塊內部:

[tv beginUpdates]; 

// delete and reloadRows  

[tv endUpdates]; 
2

嘗試重新加載表延遲。

刪除後,

[self performSelector:@selector(reloadTableview) withObject:nil afterDelay:0.35]; 

-(void) reloadTableview { 
    [self.YourTableView reloadData]; 
} 
相關問題