的UITableView的selectRowAtIndexPath:动画:的scrollPosition:在IOS reloadData后不工作8

问题描述:

我在tableView:didSelectRowAtIndexPath:的UITableView的selectRowAtIndexPath:动画:的scrollPosition:在IOS reloadData后不工作8

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

以下代码它取消选择表视图之后,由用户(动画)的螺纹表视图细胞是重新加载。它在iOS 7和更早版本中运行良好,但在iOS 8中未显示动画。

iOS 8做了哪些改变?在iOS 8中实现相同效果的最佳方式是什么?

+0

您在寻找什么样的效果?你真的需要重新加载或更新单元格吗? – Wain 2015-02-10 20:10:53

+0

1.为什么在选择一行时重新加载数据? – hariszaman 2015-02-10 20:25:50

+0

我调用'reloadData'来更新表格(添加或删除行,具体取决于所选内容)并在所选行旁边显示复选标记。我不确定这是否是最好的方式来做我需要的东西(在这方面还比较新),但是代码在iOS 7和更早版本中运行良好。 – James 2015-02-11 10:13:24

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

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

您可以运行:无需重新加载整个的tableView数据源

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

当调用didSelectRowAtIndexPath时,该单元格已被选中。所以不需要调用tableView的selectRowAtIndexPath方法。只需致电deselectRowAtIndexPath就可以在更新您的电池后执行此操作

+0

我调用'reloadData'来更新表(根据选择添加或删除行),并在选定行旁边显示复选标记。我想这是非常昂贵的,我应该以不同的方式做事(我在这方面还比较新)。但是,代码在iOS 7及更早版本中运行良好。 – James 2015-02-11 10:10:38