UITableView で行を削除するという私の概念には小さな問題があります。ユーザーが行を削除した後、私は発火したくありません:
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight];
代わりに、編集したセルのテキストと背景を非表示にせずに変更したいと考えています。私のアプローチは非常にうまく機能します:
if (editingStyle == UITableViewCellEditingStyleDelete) { NSMutableArray *previous_points = [self.trip_arrayOfAllPoints mutableCopy]; [previous_points removeObjectAtIndex:indexPath.row]; self.trip_arrayOfAllPoints = nil; self.trip_arrayOfAllPoints = [[NSMutableArray alloc] initWithCapacity:[previous_points count]]; self.trip_arrayOfAllPoints = [previous_points mutableCopy]; self.trip_arrayOfAllPointsEDITED = [[NSMutableArray alloc] initWithCapacity:[previous_points count]]; self.trip_arrayOfAllPointsEDITED = [previous_points mutableCopy]; //[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight]; self.trip_isArrayOfAllPointsEDITED = YES; }
ただし、行を削除した後、現在のセルの「DELETE」ラベルが消えるアニメーションはコミットされません。行を削除する「アップルの方法」を回避する方法はありますか?
編集 - 私はそれを解決しました
それはかなり単純明快です。deleteRowsAtIndexPaths を次のように置き換えるだけです。
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
この「削除」アニメーションの後、セルはその場所に残ります。