我有一个TableView,我想在点击时为行添加一个复选标记。为此,我有:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *selectedCountry = [self.files objectAtIndex:indexPath.row];
NSString *Documents = [[NSBundle mainBundle] pathForResource:selectedCountry ofType:@"ppt" inDirectory:@"thepowerpoints"];
//NSLog(@"%@", selectedCountry);
UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath];
if (newCell.accessoryType == UITableViewCellAccessoryNone) {
if (self.chosen == nil) {
self.chosen = [[NSMutableArray alloc] init];
}
newCell.accessoryType = UITableViewCellAccessoryCheckmark;
[self.chosen addObject:Documents];
NSLog(@"%@", self.chosen);
}else {
newCell.accessoryType = UITableViewCellAccessoryNone;
[self.chosen removeObject:Documents];
}
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}
我知道这是由于Cell的类型dequeueReusableCellWithIdentifier
而发生的。我的问题是,我可以改变什么,一旦它们开始被重用,只有被点击的行得到复选标记,而不是所有其他单元格?
答案 0 :(得分:2)
将决定是否应检查单元格的代码移动到cellForRowAtIndexPath中。保持对当前所选索引/项目的引用,然后在该单元格上设置复选标记。您可以设置未选择的单元格以将附件视图设置为none。