OC学习41:UITableView
问题1
如果在调用 reloadData
方法后,需要立即获取 tableView 的cell、高度、需要滚动tableView
,那么,直接在 reloadData
后获取是可能有问题的
原因分析:
reloadData
并不会等待tableView
更新结束后才返回,而是立即返回
,之后再计算高度、获取cell(主线程)如果表中的数据非常大,在一个
runloop
周期没有执行完,这时,获取tableView
的数据就会出现问题Apple
并没有直接提供reloadData
的API
,想要程序延迟到tableView
更新结束,可以用下面的方法
解决方法:
- 方法一
1 | [self.tableView reloadData]; |
layoutIfNeeded
会强制绘制并等待完成
- 方法二
1 | [self.tableView reloadData]; |
reloadData
会在主队列执行,而dispatch_get_main_queue
会等待机会,直到主队列空闲才执行
- Post title:OC学习41:UITableView
- Post author:张建
- Create time:2023-04-24 11:23:21
- Post link:https://redefine.ohevan.com/2023/04/24/OC/OC学习41:UITableView/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.