博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据刷新-界面加载不空白的钥匙
阅读量:6213 次
发布时间:2019-06-21

本文共 809 字,大约阅读时间需要 2 分钟。

  hot3.png

一般数据的加载途径有两种:1 本地加载  2 网络上加载。

当诸如UITableViewController或者UICollectionViewController使用数据源方法加载获得的数据时,有时会出现加载不到数据,界面空白的情况,这种情况最大的可能就是数据源方法中传递的数据是空的,没有加载到数据造成的。为什么数据源方法加载不到数据呢?

  数据源方法加载不到数据是因为数据源方法的调用早于获得数据的方法,而新获得数据又没有及时刷新导致数据源方法一直加载不到数据,从而界面留空。如何解决这种问题呢,保证在界面启动战时前,数据源方法时能够调用到数据?这要分两种情况处理:

1 本地加载数据:本地加载数据,一般是通过[NSBundle mainBundle] pathFor.....方法来加载本地数据,并且[NSBundle mainBundle]加载数据一般在懒加载中进行,这种情况下,是不会出现数据源方法加载不到数据而留空的问题的,因为此时懒加载方法要先于数据源方法被系统处理,所以当系统调用数据源方法时,懒加载已经完成加载数据,这时数据源会调用到数据不出现留空现象。

2 网络上加载数据:由于从网络上加载数据的时间比较慢,而数据源方法加载比网络加载数据的方法要优先被系统调用,所以即使网络上数据加载完毕,由于数据源方法此时已经不调用,所以在界面启动展示时界面还是空白的。要解决此问题必须在网络上数据加载完毕后立即刷新下数据([self.tableView reloadData]或则 [self.collectionView reloadData],也可以根据需要刷新部分数据),然后在界面启动前系统还会自动调用数据源方法的,由于从网络上下载的数据已经刷新,所以此时再调用数据源方法时下载到的数据会被加载上,从而正常展示界面。

转载于:https://my.oschina.net/llfk/blog/735405

你可能感兴趣的文章
thinkphp日志分析
查看>>
借助ngrok工具,解决本地微信开发的麻烦
查看>>
jquery ui 下拉菜单 隐藏
查看>>
dispatch_apply
查看>>
从零开始用 Flask 搭建一个网站(二)
查看>>
mysql 在删除索引时候 提示: check that column/key exists
查看>>
Android中BindService方式使用的理解
查看>>
Apache URL 重写配置
查看>>
用LLVM来开发自己的编译器(一)——变量和函数
查看>>
Maven入门-为什么使用Maven
查看>>
Vue+axios 实现http拦截及路由拦截
查看>>
在apollo中添加jmx监控
查看>>
WinSCP
查看>>
java 多图组合
查看>>
MySQL主从复制配置
查看>>
【工具使用系列】关于 MATLAB Simulink Stateflow, 你需要知道的事
查看>>
uClibc库的交叉编译
查看>>
让spring mvc支持put请求
查看>>
一个简单的随机数方法,支持小数
查看>>
centos下yum安装ffmpeg
查看>>