0

些細な作業に見えますが、間違っていることを見つけることができません。セクションを含むテーブル ビューがあり、1 つのアイテムを削除できますが、複数のアイテムを削除しようとすると、すべてのアイテムがテーブルから消えます。

ここで、1 行だけ削除するとシナリオがうまく機能することに注意してください。1 つの行を削除しても、UITableView の項目には影響しません。

編集ボタンをクリックすると、すべての行が削除の候補になります。コードは

[self.tableView setEditing:YES animated:YES];

行を削除しているとき、コードは次のように呼び出します。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{

    NSMutableArray *itemsOfGroup = [[table1 getItems] retain];
    int section = indexPath.section;
    section = section - 1;


    MyItem *deleteItem = (MyItem*)[[[sections objectAtIndex:section] objectForKey:@"SectionEntries"] objectAtIndex:indexPath.row];
    [itemsOfGroup removeObject:deleteItem];

    [table1 setItems:[itemsOfGroup autorelease]];
    [[[sections objectAtIndex:section] objectForKey:@"SectionEntries"] removeObjectAtIndex:indexPath.row];

    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject: indexPath] withRowAnimation:UITableViewRowAnimationRight];  
    [self createSections];
    [self.tableView reloadData];
}

私の記憶に問題がある可能性はありますか?(クラスに対して「割り当て解除されたインスタンスにメッセージが送信されました」というメッセージが表示されたらと思いますNSArray

また、アイテムが実際にはデータ ソースから削除されていないことにも注意してください。それらはテーブル ビューから消えるだけです。

4

1 に答える 1

0

テーブル 1 の項目を設定したばかりなのに、itemsOfGroup を自動解放するのはなぜですか? set の後に release 呼び出しを行うか、プロパティで self... メカニズムを使用することをお勧めします。ここでメモリの割り当て/削除を確認してください。すべてのコンテンツを破棄していますか? また、削除後、numberOfRowsInSection: と numberOfSections: は何を返しますか? それらを確認してください。

于 2012-12-10T18:22:53.287 に答える