iphone – UITableView中的选中标记
发布时间:2020-12-14 19:52:21 所属栏目:百科 来源:网络整理
导读:我创建了一个包含20个单元格的tableview. 当我选择第一行时,它会在上面显示复选标记. 但是当我滚动tableview时,它不仅在tableview单元格上有一个复选标记. 它也显示在另一个细胞上. 这有什么问题? self.dataAry = [NSArray arrayWithObjects:@"0",@"1",@"2"
我创建了一个包含20个单元格的tableview.
当我选择第一行时,它会在上面显示复选标记. 但是当我滚动tableview时,它不仅在tableview单元格上有一个复选标记. 这有什么问题? self.dataAry = [NSArray arrayWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17",@"18",@"19",nil]; marks = [NSMutableArray new]; for (int i = 0 ; i < [self.dataAry count]; i++) { [marks addObject:@"NO"]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } cell.textLabel.text = [dataAry objectAtIndex:indexPath.row]; if ([[marks objectAtIndex:indexPath.row] isEqualToString:@"YES"]) { [cell setAccessoryType:UITableViewCellAccessoryCheckmark]; }else { [cell setAccessoryType:UITableViewCellAccessoryNone]; } // Configure the cell. return cell;} - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *thisCell = [tableView cellForRowAtIndexPath:indexPath]; if ([[tableView cellForRowAtIndexPath:indexPath] accessoryType] == UITableViewCellAccessoryCheckmark){ [[tableView cellForRowAtIndexPath:indexPath] setAccessoryType:UITableViewCellAccessoryNone]; [selectArray removeObject:[self.dataAry objectAtIndex:indexPath.row]]; [marks replaceObjectAtIndex:indexPath.row withObject:@"NO"]; } else { [[tableView cellForRowAtIndexPath:indexPath] setAccessoryType:UITableViewCellAccessoryCheckmark]; [selectArray addObject:[self.dataAry objectAtIndex:indexPath.row]]; [marks replaceObjectAtIndex:indexPath.row withObject:@"YES"]; } } 解决方法
我认为这是由于重新使用经过检查标记的单元格.要纠正这个问题,请写下:
*if ([[marks objectAtIndex:indexPath.row] isEqualToString:@"YES"]) { [cell setAccessoryType:UITableViewCellAccessoryCheckmark]; }else { [cell setAccessoryType:UITableViewCellAccessoryNone];* 脱离细胞重用空间.那是后: 就在此之前 *return cell;* (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |