UITableView 的 selectRowAtIndexPath:animated:scrollPosition: 重新加载后不起作用iOS 8中的数据



我在tableView:didSelectRowAtIndexPath: 中有以下代码

[tableView reloadData];
[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
[tableView deselectRowAtIndexPath:indexPath animated:YES];

它会在重新加载表视图后取消选择用户点击的表视图单元格(使用动画)。它在iOS 7及更早版本中运行良好,但在iOS 8中没有显示动画。

iOS 8中进行了哪些更改导致了这种情况?在iOS 8中实现相同效果的最佳方法是什么?

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

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

您可以运行:

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

而不必重新加载整个tableView数据源。

当调用didSelectRowAtIndexPath时,该单元格已被选中。因此,不需要调用tableView的selectRowAtIndexPath方法。只需调用deselectRowAtIndexPath就可以在更新细胞后完成任务

最新更新