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

Ios 实现EstimatedHeightForrowatingIndexPath:会导致在重新加载时tableView向下滚动,ios,iphone,uitableview,Ios,Iphone,Uitableview,我在我的一个项目上实现了“无限滚动”,当时我正在使用新的estimatedheightforrowatinexpath:delegate方法。一旦我实现了委托方法,每当我调用reloadData(当我添加一组新行时会发生这种情况),我的tableView就会跳转(即滚动到底部) 如果没有该方法,我的tableView将保持不变,它会将附加行添加到tableView的底部,而无需任何滚动 我调用的是[tableView reloadData],而不是其他方法(insertRowsAtIndexPa

我在我的一个项目上实现了“无限滚动”,当时我正在使用新的
estimatedheightforrowatinexpath:
delegate方法。一旦我实现了委托方法,每当我调用reloadData(当我添加一组新行时会发生这种情况),我的tableView就会跳转(即滚动到底部)

如果没有该方法,我的tableView将保持不变,它会将附加行添加到tableView的底部,而无需任何滚动

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


有人经历过吗?我

使用此scrollView Delagete方法检查您的状况

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

下面是我在重新加载tableView时减少跳跃的方法

EstimatedHeightForrowatineXpath:
中,我开始返回一个更好的估计高度。高度越精确,在底部添加新行时跳跃越小

我还开始将计算出的单元格高度从
heightforrowatinexpath:
缓存到字典中,并在下次调用
estimatedheightforrowatinexpath:
时返回缓存的值


希望这能帮助任何遇到此问题的人。

我不久前提交了一份错误报告(16472265),今天得到的答复是它已在iOS8中修复。试过了,现在可以正常工作了。不要再跳台了!Wohooo

如果不向数组添加和添加值,则无法进一步滚动tableView。我不确定是否理解您的意思。假设我最初在数组中有10个项目,每个项目在tableView中都是一行,只要用户向下滚动到第8个项目,我就会添加另一组项目,因此我的数组计数现在是20,tableView有20行。如果用户继续停留在第8行,我调用reloadData,它会跳到第11项(当estimatedHeightForRowAtIndexPath:实现时)。您真的解决了这个问题吗?我也遇到了同样的问题,我更希望tableview不要跳转……:)@Georg I通过更好地估计细胞高度,减少了跳跃。看到我原来的回复:@newDeveloper,但它仍然在跳跃,对吗?我希望根本没有跳转:)我宁愿不显示滚动指示器(尽管这很糟糕,我知道),但跳转更糟糕……我想我在这里又迷路了。如果我错了,请随时纠正我。我知道tableView实现了UIScrollViewDelegate,它可能在重载数据时调用此方法(我猜它调用scrollViewDidScroll:first),您是否建议我强制使tableView不滚动(通过将contentOffset设置为上一个值)?这似乎是一个解决办法,而不是一个适当的解决办法。好得多,但不是完全解决我的问题。在willDisplayCell中,我获取渲染单元格的值并将其存储在数组中。调用
EstimatedHeightForrowatineXpath
时,它返回缓存的值。这些值总是准确的,因为总是调用
willDisplayCell
。即使它们不是,它们最多也会偏离我的像素。干杯这让我非常头痛。