一般数据的加载途径有两种:1 本地加载 2 网络上加载。
当诸如UITableViewController或者UICollectionViewController使用数据源方法加载获得的数据时,有时会出现加载不到数据,界面空白的情况,这种情况最大的可能就是数据源方法中传递的数据是空的,没有加载到数据造成的。为什么数据源方法加载不到数据呢?
数据源方法加载不到数据是因为数据源方法的调用早于获得数据的方法,而新获得数据又没有及时刷新导致数据源方法一直加载不到数据,从而界面留空。如何解决这种问题呢,保证在界面启动战时前,数据源方法时能够调用到数据?这要分两种情况处理:
1 本地加载数据:本地加载数据,一般是通过[NSBundle mainBundle] pathFor.....方法来加载本地数据,并且[NSBundle mainBundle]加载数据一般在懒加载中进行,这种情况下,是不会出现数据源方法加载不到数据而留空的问题的,因为此时懒加载方法要先于数据源方法被系统处理,所以当系统调用数据源方法时,懒加载已经完成加载数据,这时数据源会调用到数据不出现留空现象。
2 网络上加载数据:由于从网络上加载数据的时间比较慢,而数据源方法加载比网络加载数据的方法要优先被系统调用,所以即使网络上数据加载完毕,由于数据源方法此时已经不调用,所以在界面启动展示时界面还是空白的。要解决此问题必须在网络上数据加载完毕后立即刷新下数据([self.tableView reloadData]或则 [self.collectionView reloadData],也可以根据需要刷新部分数据),然后在界面启动前系统还会自动调用数据源方法的,由于从网络上下载的数据已经刷新,所以此时再调用数据源方法时下载到的数据会被加载上,从而正常展示界面。