「スワイプして削除」を使用しています。シーケンス内の複数のセルを削除する場合、uitableview の一部のセルが 2 倍になるか、既に削除されたセルが表示されます。画像を投稿できないため、テーブルの動作について説明します。
- セル削除前のテーブル: User1、User2、User3、User4、User5、新しいユーザーを追加します。
- User1 と User5 の削除後のテーブル: User2、User3、User4、新しいユーザーの追加、新しいユーザーの追加(ただし、選択できません)。
- User3削除後の表:User4、User2、新規ユーザー追加、User5(選択可)、新規ユーザー追加(選択不可)。
セルを削除する方法は次のようになります。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[self.usersTable beginUpdates];
UITableViewCell *cell = (UITableViewCell *)[self.usersTable cellForRowAtIndexPath:indexPath];
NSString *userNameToDelete = cell.textLabel.text;
// Data source
[self.appDict removeObjectForKey:userNameToDelete];
self.arrayOfUserNames = [[NSMutableArray alloc] initWithArray:[self.appDict allKeys]];
[self.appDict writeToFile:self.pathOfAppFile atomically:YES];
// Deleting cell
[self.usersTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[self.usersTable endUpdates];
}
}
編集をサポートする方法:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == [self.arrayOfUserNames count]) {
return NO;
}
else {
return YES;
}
セクションの行数:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self.arrayOfUserNames count] + 1;
}
[self.usersTable reload] は既に試しましたが、すべて同じままです。numberOfRowsInSection: のテーブルのサイズも変更しようとしましたが、それも役に立ちません。私が間違っていることは何ですか?