日々精進

新しく学んだことを書き留めていきます

UITableViewの編集モード変更とリロードを同時にやるとアニメーションがキャンセルされる

以下のようにself.tableView.editingの変更とreloadDataを同じイベント内で行うとアニメーションが行われなくなってしまう。

- (IBAction)editButtonTouch:(UIBarButtonItem *)sender {
    [self.tableView setEditing:!self.tableView.editing animated:YES];
    [self.tableView reloadData];
}

これはアニメーションが始まってすぐにreloadDataでUIが上書きされてしまうため。
以下のようにreloadDataにWaitをかければアニメーションするようになる。

- (IBAction)editButtonTouch:(UIBarButtonItem *)sender {
    [self.tableView setEditing:!self.tableView.editing animated:YES];
    [self.tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.5f];
}