0

テーブルビューに4つのセクションがあり、行が押されたときにその行にチェックマークを追加したいと思います。以下のコードでは、行を選択すると、他の行の一部もチェックされますが、これは望ましくありません。いくつかのセクションと関係があると思いますが、それを確認したり修正したりする方法がわかりません。私の_allTagsListは、4つのディクショナリを持つNSMutableArrayです。

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
     NSDictionary *dictionary = [_allTagsList objectAtIndex:indexPath.section];
     NSArray *array = [dictionary objectForKey:@"Tags"];
     NSString *selectedTag = [array objectAtIndex:indexPath.row];


     if([tableView cellForRowAtIndexPath:indexPath].accessoryType == UITableViewCellAccessoryCheckmark)
     {
         [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryNone;
     }
     else
     {
         [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
     }

     [tableView deselectRowAtIndexPath:indexPath animated:YES];
}
4

1 に答える 1

2

どのindexPathが選択されているかを保存する必要があり、cellForRowAtIndexPath関数で、保存されたindexPathに基づいてaccessoryTypeを設定する必要もありません。セルのaccessoryTypeを変更してからスクロールすると、そのセルがリサイクルされるため、accessoryTypeはチェックされたままになります。

于 2012-05-04T21:36:58.157 に答える