2012-12-06 61 views
0

我有一個表格,當您選擇一個項目時,它會更改一些有關該單元格中的對象的東西,然後將該單元格移動到底部,然後重新加載表格數據。如何知道何時添加和刪除單元格UITableView完成動畫

//update model 
... 

//move cell to bottom 
[tableView beginUpdates]; 
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationBottom]; 
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:lastIndex inSection:0]] withRowAnimation:UITableViewRowAnimationTop]; 
[tableView endUpdates]; 

//reload cells 
[tableView reloadData]; 

目前,它的工作原理,但不等待動畫完成。在重新加載數據之前,如何等待插入和刪除動畫完成?或者如果有更好的方法去做,那也很好。

回答

1

簡單而言,您可以使用UITableView的moveRowAtIndexPath,而不是刪除單元格然後立即添加一個新的單元格,從而將單元格從其起始點移動到其終點。

[tableView moveRowAtIndexPath:[NSArray arrayWithObject:indexPath] toIndexPath:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:lastIndex inSection:0]]]; 
+0

簡化了前面的部分,但它仍然只是在我重新加載數據時跳過動畫。有沒有辦法讓那個動畫結束? – Alex

+0

@Alex在beginUpdates和endUpdates之間執行此操作應該可以做到,我認爲問題在於[tableView reloadData];'的用法。嘗試一起刪除該行。 –