ユーザーがセルを削除したいときに UITableView を更新するメソッドを作成しました。
-(void)removeMoreFriendsRow:(NSNotification *)notification {
NSDictionary *d = [notification userInfo];
NSIndexPath *index = [d objectForKey:@"indexPath"];
[self.p_currentFriends removeObjectAtIndex:index.row];
[self.o_table deleteRowsAtIndexPaths:[NSArray arrayWithObject:index] withRowAnimation:UITableViewRowAnimationRight];
}
p_currentFriends は、UITableView によって出力されるすべてのオブジェクトを含む NSMutableArray です。
この方法は、1 回使用すると問題なく動作しますが、複数回使用すると失敗します。
deleteRowsAtIndexPaths の各呼び出しで indexPath が同じままであるように見えます。
例えば、
- 最初の呼び出しで、ユーザーは 2 番目のセル (indexPath = [0,1]) をタップし、正しいセルが削除されます。
- 2 番目の呼び出しで、ユーザーは 3 番目のセルをタップし、indexPath = [0,2] ではなく [0,3] にします。
それを機能させる唯一の方法は reloadData を使用することですが、セルの削除にアニメーションを付けたいです。
これどうやってするの?