UIVIEw UIScrollVIEw -- (Frame = {0,320,480}) UICollectionVIEw -- (firstCollectionVIEw,Tag = 0,Frame = {0,480}) UICollectionVIEw -- (secondCollectionVIEw,Tag = 1,Frame = {480,480}) UICollectionVIEw -- (thirdCollectionVIEw,Tag = 2,Frame = {960,480})
然后,在vIEwDIDload中我调用
[self.firstCollectionVIEw reloadData]; // Tag = 0[self.secondCollectionVIEw reloadData]; // Tag = 1[self.thirdCollectionVIEw reloadData]; // Tag = 2
在委托方法numberOfSectionsInCollectionVIEw:中,我把NSLog看看哪个collectionVIEw开始重新加载它的数据
- (NSInteger)numberOfSectionsInCollectionVIEw:(UICollectionVIEw *)collectionVIEw { NSLog(@"Tag : %i",collectionVIEw.tag);}
令人惊讶的是,我得到了这个结果
2014-05-27 12:20:22.462 SampleApp[60652:60b] Tag : 22014-05-27 12:20:22.462 SampleApp[60652:60b] Tag : 12014-05-27 12:20:22.462 SampleApp[60652:60b] Tag : 0
我每次尝试都会产生这样的结果(2 – > 1 – > 0)
你知道为什么结果(log)是反向的吗?它与线程有关吗?
最好
附:我无法共享实际代码,但是,这是与UICollectionVIEw问题相关的所有内容.我只是调用控制器的vIEwDIDLoad中的单个UIScrollVIEw中包含的多个UICollectionVIEw的reloadData,并发现了这个奇怪的结果.
解决方法 重新加载调用后,重新加载调用将在单独的线程中运行.线程不保证按顺序运行.该框架将根据需要提出数据.如果集合视图不在可见框架中,则根本不会触发委托回调.如果您正在查看按顺序重新加载数据,则有特定的方法可以实现它.请查看wait till UITableView finish reloadData和Get notified when UITableView has finished asking for data?.您也可以为集合视图扩展它.
总结以上是内存溢出为你收集整理的ios – 同时在多个UICollectionView上调用reloadData全部内容,希望文章能够帮你解决ios – 同时在多个UICollectionView上调用reloadData所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)