0

「スワイプして削除」を使用しています。シーケンス内の複数のセルを削除する場合、uitableview の一部のセルが 2 倍になるか、既に削除されたセルが表示されます。画像を投稿できないため、テーブルの動作について説明します。

  1. セル削除前のテーブル: User1、User2、User3、User4、User5、新しいユーザーを追加します。
  2. User1 と User5 の削除後のテーブル: User2、User3、User4、新しいユーザーの追加、新しいユーザーの追加(ただし、選択できません)。
  3. 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: のテーブルのサイズも変更しようとしましたが、それも役に立ちません。私が間違っていることは何ですか?

4

1 に答える 1