1

私は、アイテムのリストを表示するテーブルビューを備えたiPhoneアプリケーションを作成しています。それぞれにチェックマークが付いています。ワンクリックで各アイテムを選択/選択解除できます。ボタン [DONE] を押すと、すべてのセルに沿って反復し、チェックマークが有効になっているセルを確認したいと思います。何かのようなもの:

    for (int i = 0; i < [fullDataset count]; i++) {
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];
    UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:indexPath];
    if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
        NSLog(@"THIS CELL IS SELECTED!");
    } 
}

さて、問題は、この手順を使用すると、選択され、現在表示されているセルのみが取得されることです。表示されていないものも含め、すべてのセルで手順が実行されることを確認したいと思います。選択を追跡するために別のデータ構造を使用するかもしれませんが、少し冗長に見えます。

何か案が?

どうもありがとう!

クロース

4

1 に答える 1

2

セルが選択されているかどうかを伝えるためにセルを当てにすることはできません。セルは再利用され、常にその状態が変化します。
選択した indexPath の個別の NSSet を管理する必要があります。ユーザーがセルをタップすると、この indexPath がセットに追加され、セルの選択が解除されると、indexPath がセットから削除されます。

于 2012-07-13T16:38:33.860 に答える