gpt4 book ai didi

ios - UITableView insertRows 不锁定主线程

转载 作者:行者123 更新时间:2023-11-29 03:25:02 25 4
gpt4 key购买 nike

我正在尝试像 Facebook 应用程序那样实现无限滚动。

Facebook 似乎正在以某种方式插入行或重新加载表格 View 而不停止当前滚动。

有人知道他们是如何实现这一目标的吗?

当我在滚动期间调用插入行或重新加载数据时,滚动会停止。任何帮助将不胜感激。

没有太多代码来提供典型的 UITableView 功能。

[self.tableView insertRowsAtIndexPaths:self.paths withRowAnimation:UITableViewRowAnimationNone];

[self.tableView reloadData];

self.paths 是最近通过下一页请求添加的路径。

我还添加了以下方法

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath; 

现在调用 reloadData 可以正常工作。不幸的是,即使这加快了单元格的添加速度,它仍然锁定当前滚动。

最佳答案

好的,就停止当前事件的滚动而言,问题归结为一行代码。而且解决方案也同样小。

我的 TableView 上有一个刷新控件。在接收 TableView 的下一组数据的方法中,我将调用以下代码。

         [refreshControl endRefreshing];

我的假设是,如果不刷新,endRefreshing 将什么都不做。

嗯...显然事实并非如此。当您在不刷新的刷新控件上调用 endRefreshing 时,它会停止 tableview 滚动。我的修复如下。

     if(refreshControl.isRefreshing){
[refreshControl endRefreshing];
}

现在滚动在下一次加载后继续,尽管有一些延迟。当然,这种延迟更容易调试。

这只是计算要添加的单元格的高度所涉及的开销,除非您有,否则在调用重新加载时会在所有单元格上调用该高度

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath;

现在我已经把所有事情都整理好了,是时候创建一种有效的方法来计算一个合理接近的估计高度了。

关于ios - UITableView insertRows 不锁定主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20549475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com