- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
if ([selectedCell accessoryType] == UITableViewCellAccessoryNone) {
[selectedCell setAccessoryType:UITableViewCellAccessoryCheckmark];
} else {
[selectedCell setAccessoryType:UITableViewCellAccessoryNone];
}
[tableView deselectRowAtIndexPath:indexPath animated:NO];
}
好的,这很奇怪。
发生了什么:当行数大约超过10行时,一切都变得很糟糕,如果我选择第一行,则选择第8行和第10行。如果我取消选择第8行和第10行,则没有任何反应。如果我选择第8行和第10行,它们会被选中,但第3行和第5行会被选中。
这也发生在AppCoda的教程项目上:http://www.appcoda.com/how-to-handle-row-selection-in-uitableview/
这只是XCode吗?如果是,这是一个巨大的故障。
答案 0 :(得分:2)
在cellForRowAtIndexPath
的实现中,您需要检查是否选中了行,并相应地设置附件视图。否则,附件视图就是单元进入重用队列时的任何视图。
答案 1 :(得分:0)
我相信您在更改配件类型后忘记更新单元格:
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];