实现estimatedHeightForRowAtIndexPath:导致tableView在重新加载时向下滚动

时间:2014-03-31 04:52:32

标签: ios iphone uitableview

我实施了无限滚动'在我的一个项目中,我正在使用新的estimatedHeightForRowAtIndexPath:委托方法。一旦我实现了该委托方法,每当我调用reloadData时,我的tableView就会跳转(a.k.a滚动到底部)(当我添加一组新行时会发生这种情况。)

如果没有这种方法,我的tableView就会保留在原位,它会将额外的行添加到tableView的底部而不进行任何滚动。

我正在调用[tableView reloadData]而不是其他方法(insertRowsAtIndexPaths:)。我没有调用beginUpdates或endUpdates,因为我正在重新加载整个表格。

有没有人经历过这个?我

3 个答案:

答案 0 :(得分:6)

所以这就是我在重新加载tableView时减少跳跃的方法。

estimatedHeightForRowAtIndexPath:我开始返回更好的估计身高。高度越准确,在向底部添加新行时跳跃越少。

我还开始从字典中的heightForRowAtIndexPath:缓存单元格的计算高度,并在下次调用estimatedHeightForRowAtIndexPath:时返回缓存的值。

希望这有助于遇到此问题的任何人。

答案 1 :(得分:2)

我刚刚提交了一份BugReport(16472265),今天得到了它在iOS8中修复的响应。尝试了它,现在按预期工作。不再跳桌面了! Wohoooo

答案 2 :(得分:0)

在此scrollView Delegate方法中检查您的条件,

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate