UITableView的selectRowAtIndexPath:animated:scrollPosition:在iOS 8中的reloadData之后无法正常工作

时间:2015-02-10 19:54:50

标签: ios uitableview ios8

我在tableView:didSelectRowAtIndexPath:

中有以下代码
[tableView reloadData];
[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
[tableView deselectRowAtIndexPath:indexPath animated:YES];

在重新加载表视图后,它取消选择由用户(带动画)轻触的表格视图单元格。它在iOS 7及更早版本中运行良好,但在iOS 8中未显示动画。

在iOS 8中做了哪些更改才导致此问题?在iOS 8中实现相同效果的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

导致您致电[tableView reloadData]的周围代码是什么?

根据您在cellForRowAtIndexPath及周围方法中的处理量,这可能是一项昂贵的操作。

你可以运行:

[tableView beginUpdates];
// Update code here
[tableView endUpdates];

无需重新加载整个tableView数据源。

调用didSelectRowAtIndexPath时,单元格已被选中。所以不应该需要调用tableView的selectRowAtIndexPath方法。在更新单元格后,只需调用deselectRowAtIndexPath即可。