在我的应用程序中,我有一个UITableView,它包含多个自定义UITableViewCells。在我的故事板中,我选中了Single Selection,因为我一次只想要一个选定的单元格。在我的ViewController中,我重写didSelectRowAtIndexPath
和didDeselectRowAtIndexPath
,如下所示:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath {
TextsTableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
selectedCell.backgroundColor = [UIColor blueColor];
selectedCell.textLabel.textColor = [UIColor whiteColor];
self.chosenTextId = [NSNumber numberWithInteger:[selectedCell tag]];
self.chosenStaticText = [selectedCell.textLabel text];
NSLog(@"The textID: %@ and the text: %@", self.chosenTextId, self.chosenStaticText);
}
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath*)indexPath {
TextsTableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
selectedCell.backgroundColor = [UIColor whiteColor];
selectedCell.textLabel.textColor = [UIColor blackColor];
self.chosenTextId = nil;
self.chosenStaticText = nil;
}
只要我不滚动一切似乎工作正常(虽然我不能检查这个没有滚动)。我的日志只包含我单击的正确选择的单元格。但是当我向下滚动时,还有其他细胞被选中。有人知道可能出现什么问题吗?
答案 0 :(得分:2)
这里的问题是你的UITableViewCell
正在重复使用,这会保持状态,因此只有当你滚动时才会发生这种情况。您需要将所选单元格indexPath存储在NSMutableArray
等存储集合对象中。然后在cellForRowAtIndexPath
中,您可以检查是否应该选择单元格,如果是,请选择它,如果它不确定未选中。