我尝试优化UITableView,它应该在启动时显示列表的结尾。
存储数据库后,它从后台线程调用[tableView reloadData]
,然后在主线程[tableView scrollToRowAtIndexPath:lastIndexPath atScrollPositionBottom animated:NO]
上调用。
我和estimatedRowHeight一起工作,所以只能为可见项调用heightForRowAtIndexPath。 (但如果我将其停用,则对此问题没有任何影响)
在iOS 8设备(iPhone 6,iPhone 5S)上运行此功能一切正常。
从屏幕底部(最后一项)到屏幕cellForRowAtIndexPath
上的最后一个可见项目和heightForRowAtIndexPath
被调用。
在iOS 7设备(iPhone 4S)上只调用heightForRowAtIndexPath
并且TableView上没有项目可见。
如果我滚动两次cellForRowAtIndexPath
则会调用并显示项目。
将scrollToRowAtIndexPath
设置为animated:YES
并没有任何区别。
有什么建议吗?
修改
如果没有scrollToRowAtIndexPath
,一切正常,但列表位于顶部。 (错过了目标)
编辑2:
在为(CGFloat)100
返回estimatedHeightForRowAtIndexPath
后,它可以正常工作。但是根据项目的高度,有时它不会滚动到列表的末尾。因此我返回前8项[{1}},之后(CGFloat)500
(这给了我在开头描述的错误)。到达列表底部的任何其他解决方法?