NSFetchedResultsController を実装し、スワイプによって表示される削除ボタンを介して行の削除を正常に実装しました (これは UITableView の標準コントロールであり、私が作成したカスタムではありません)。- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
セルが参照する Core Data データベース内のエンティティが削除されるように上書きすることでこれを行いました。
ここで、独自の削除コントロールを実装したいと考えています。UITableViewCell サブクラスに UIPanGesture を追加したので、セルをパンすると、セルがスワイプされると移動する削除ボタンが表示されます (iOS 7 のメール アプリやクリア アプリと同様です)。カスタム プロトコルを介して、NSFetchResultsController を持つビュー コントローラーは、カスタム削除ボタンが押されたセルを受け取ります。NSIndexPath *indexPath = [self.tableView indexPathForCell:cellToDelete];
これにより、削除する必要があるセルを使用して indexPath を計算できます。唯一の問題は、このセルを削除するにはどうすればよいですか?
UITableView にはdeleteRowsAtIndexPaths: withRowAnimation:
メソッドがあります。私が知る限り、そのNSFetchResultsController
ような方法はありません。私が必要としているのは- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
、そこにすでに削除を実装しているので、何らかの方法で呼び出されることだと思います。
概要: UIViewController には、NSFetchedResultsController
削除する必要があるセル (および indexPath) へのポインタがあります。セルを削除するにはどうすればよいですか?