我正试图像Facebook应用程序那样实现无限滚动。
似乎Facebook以某种方式插入行或重新加载表格视图而不停止当前滚动。
有谁知道他们是如何实现这一目标的?
当我在滚动期间调用插入行或重新加载数据时,滚动停止。任何帮助将不胜感激。
没有太多代码可以提供典型的UITableView功能。
[self.tableView insertRowsAtIndexPaths:self.paths withRowAnimation:UITableViewRowAnimationNone];
或
[self.tableView reloadData];
self.paths
是最近通过下一页请求添加的路径。
我还添加了以下方法
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath;
现在正在调用reloadData时正常工作。不幸的是,即使加速细胞的加速,它仍会锁定当前的滚动。
答案 0 :(得分:1)
好的,就当前活动卷轴的停止而言,问题归结为一行代码。解决方案同样很小。
我的TableView对它有一个刷新控件。在我收到TableView的下一组数据的方法中,我将调用以下内容。
[refreshControl endRefreshing];
我的假设是,如果它没有令人耳目一新,那么endRefreshing根本就什么都不做。
嗯......显然事实并非如此。当你在不刷新它的刷新控件上调用endRefreshing时,将停止tableview滚动。我的修复如下。
if(refreshControl.isRefreshing){
[refreshControl endRefreshing];
}
现在滚动在下一次加载后继续,尽管有一些延迟。这种延迟当然更容易调试。
这只是计算所添加单元格高度所涉及的开销,在调用重载时调用所有单元格,除非你有
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath;
所以现在我已经把所有事情都弄清楚了,是时候创造一种有效的方法来计算一个合理接近的估计高度。