iOS - UITableView判断reloadData加载数据已经结束
2024-08-27 08:12:01
问题:
stackoverflow上有人提问这样的问题
http://stackoverflow.com/questions/16071503/how-to-tell-when-uitableview-has-completed-reloaddata
如果在调用reloadDate方法后需要立即获取tableview的cell、高度,或者需要滚动tableview,那么,直接在reloadData后执行代码是有可能出问题的。
原因:
reloadDate并不会等待tableview更新结束后才返回,而是立即返回,之后再计算表高度,获取cell(主线程中)。
如果表中的数据非常大,在一个run loop周期没执行完,这时,需要tableview视图数据的操作就会出问题了。
apple并没有直接提供reloadData的api,想要程序延迟到reloadData结束在操作,可以用以下方法
方法1:
[self.tableView reloadData];
[self.tableView layoutIfNeeded];
//刷新完成
layoutIfNeeded会强制重绘并等待完成。
方法2:
[self.tableView reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
//刷新完成
});
reloadDate会在主队列执行,而dispatch_get_main_queue会等待机会,直到主队列空闲才执行
最新文章
- vmware workstation安装 Mosrosoft Runtime DLL安装程序未能完成安装
- MyBatis学习总结(一)——MyBatis快速入门
- PCB Layout高速电路设计小知识点
- 几个常见的布局的多种实现方式及margin负值总结
- C# 中科学计数法转成正常值
- 使用Topshelf 开发windows服务
- 2015南阳CCPC D - Pick The Sticks dp
- Android(java)学习笔记93:Android布局详解之一:FrameLayout
- tr 命令 操作字符串中字符 删除替换 等
- 如何解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题
- 从今天开始学习C#啦
- mysql中游标的使用案例详解(学习笔记)
- Playground中格式注释语法
- [Swift]LeetCode587. 安装栅栏 | Erect the Fence
- jvm虚拟机分享课笔记
- Sitecore CMS中的项目如何配置帮助文本
- OS Tools-GO富集分析工具的使用与解读详细教程
- NOI1999 生日蛋糕
- mysql每天凌晨0点准时启动taskeng.exe如何关闭
- Graphics.Blit