UITableViewでアニメーション付きで行を削除しつつ表示を更新するやり方
1行ごとに色を変えてたり、セルに行番号とか表示してるとdeleteRowsAtIndexPaths:
だけでは、表示が更新されないことに気づきreloadData
呼んだ。
でも、reloadData
呼ぶと削除アニメーションが消えちゃうのであれーどうやるのかなーと思って調べたけど、意外と日本語出てこなかったのでメモ。
答えは、StackOverflowにあった。
How to delete row in UITableView and update indexPaths without calling reloadData?
アニメーション付きのreloadData
みたいなメソッドがUITableView
にあったのでそれでリロードしてねってことでした。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle != UITableViewCellEditingStyleDelete) { return; } /* dataSourceを削除する処理 */ [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; [tableView reloadRowsAtIndexPaths:[tableView indexPathsForVisibleRows] withRowAnimation:UITableViewRowAnimationAutomatic]; }