[アップデート]
問題が見つかりました。カスタム UITableViewCell を作成しましたが、削除をトリガーする標準的な方法を使用していません。私のカスタム UITableViewCell には、セルの作成時に入力するカスタム indexPath プロパティがあります。そのため、データをリロードする呼び出しがないと更新されません。
回避策として、コードの書き換えを最小限に抑えるために、回答としてマークされたソリューションを使用しています。
[/アップデート]
これに似た他の質問を見たことがありますが、まったく同じではありません...
NSArray 内のオブジェクトから行 (セル) を取得する UITableView があります。行は、indexPath.row を使用して NSArray にマップされます。これは、NSArray のインデックス 0 のオブジェクトが indexPath.row 0 のセルに対応することを意味します。
行を削除するたびに、NSArray からオブジェクトを削除します (Apple のドキュメントを含む多くの例に見られるように)。
問題は、行が削除されるたびに indexPath が更新されないことです。例えば:
3行のテーブルビューがあります。これは、indexPath.row 0、1、および 2 があることを意味します。また、対応する NSArray オブジェクトのインデックスは 0、1、および 2 です。
UITableView から行 1 を削除し、NSArray の対応するオブジェクトを削除すると、indexPath.row 1 と 2 が残りますが、NSArray のインデックスは 0 と 1 です。
UITableView から 2 番目の行を削除しようとすると、indexPath.row が 2 であるため問題が発生しますが、NSArray の対応するオブジェクトのインデックスは 1 です。
別の言い方をすれば、indexPath.row とオブジェクトのインデックスはもはや「同期」していません。
人々は UITableView の reloadData メソッドを使用することを提案しています...実際、これは indexPaths を「リセット」しますが、UITableView の行のアニメーションを中断します。
どうすれば行を削除し、indexPaths を更新し、UITableView のアニメーションを維持できますか?!