我正在尝试设置我的 UITableView 以在用户执行我正在侦听的操作时打勾。我可以显示复选标记,但它们显示在多个位置。
现在我的 cellForRowAtIndexPath 看起来像这样:
- (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.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
if(myCheckmarks[indexPath.row] == [NSNumber numberWithInt:1])
cell.accessoryType = UITableViewCellAccessoryCheckmark;
cell.textLabel.text = [benchmarkArray objectAtIndex:indexPath.row];
return cell;
}
我正在使用它来设置它正在读取的数组:
[myCheckmarks replaceObjectAtIndex:tempIndex withObject:[NSNumber numberWithInt:1]];
虽然在这个实现中,复选标记甚至在表格移动之前都不会出现,但这在某种程度上是意料之中的。
这是我的旧代码,它会立即设置复选标记,但我仍然有整个“滚动时有多个复选标记”的问题:
UITableViewCell *cell = [metricTableView cellForRowAtIndexPath:selectedCellIndexPath];
cell.accessoryType = UITableViewCellAccessoryNone;
cell = nil;
NSLog(@"1 else hit");
那是用户点击一个按钮的时候,它会立即更新,因为那时调用了代码。如果桌子被移动,它仍然会在整个地方都有复选标记。
如何设置它以便我可以在长度为 11-27 个元素但一次只显示十个元素的表格上使用附件复选标记(出于 UI 设计原因)?
编辑:我需要在我的 cellForRowAtIndexPath 中添加它,文本永远不会重复。它正在读取一个包含 11-27 个项目的数组,并且每次都正确显示每个单元格,但是当我尝试使用 UITableViewCellAccessoryCheckMark 时,当我滚动 UITableView 时,它会显示在多个位置。