UITableView didSelectRowAtIndexPath选择多个单元格毛刺?

时间:2014-03-06 01:05:15

标签: ios objective-c uitableview

- (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吗?如果是,这是一个巨大的故障。

2 个答案:

答案 0 :(得分:2)

cellForRowAtIndexPath的实现中,您需要检查是否选中了行,并相应地设置附件视图。否则,附件视图就是单元进入重用队列时的任何视图。

答案 1 :(得分:0)

我相信您在更改配件类型后忘记更新单元格:

[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];