0

iPhoneアプリケーションにUITableViewを実装しました。さらに、UITableViewに複数の行の選択を追加しましたが、問題は、特定の行を選択してからテーブルをスクロールし、選択されていない(マークされていない)それぞれの行に戻ると、didSelectRowAtIndexPathメソッドが表示されることです。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath     *)indexPath
{

        [tableView deselectRowAtIndexPath:indexPath animated:YES];
        if([tableView cellForRowAtIndexPath:indexPath].accessoryType==UITableViewCellAccessoryNone)
        {  
            [tableView cellForRowAtIndexPath:indexPath].accessoryType=UITableViewCellAccessoryCheckmark;        
            [selectedIndexes addObject:[NSNumber numberWithInt:indexPath.row]];
            NSLog(@"Select now %d",[selectedIndexes count]);
        }
        else if([tableView cellForRowAtIndexPath:indexPath].accessoryType==UITableViewCellAccessoryCheckmark)
        {
            [tableView cellForRowAtIndexPath:in dexPath].accessoryType=UITableViewCellAccessoryNone;
            [selectedIndexes removeObject:[NSNumber numberWithInt:indexPath.row]];
            NSLog(@"DeSelect now %d",[selectedIndexes count]);
        }   
}

解決策を教えてください。

4

2 に答える 2

1

毎回テーブル ビューをスクロールしている間、デリゲート メソッド cellForRowAtIndexPath メソッドが毎回呼び出されます。そのため、毎回データが読み込まれます。つまり、最初に、どの行がクリックされたかを didSelectRowAtIndexPath メソッドで保存する必要があり、これらに従ってcellForRowAtIndexPath メソッドの行インデックスは、どのテーブル ビュー行がチェック マーク付きで既に選択されているか、チェック マークが付いていない残りの行を表示する必要があります...

于 2012-10-31T06:47:52.230 に答える
0

これをチェックして。複数行の選択と編集

本当に簡単で便利です。

プログラミングを楽しむ

于 2012-10-31T06:45:02.140 に答える