ios – 同时在多个UICollectionView上调用reloadData

ios – 同时在多个UICollectionView上调用reloadData,第1张

概述我有一个带有单视图控制器的示例应用程序.控制器的视图的子视图如下所示 UIView UIScrollView -- (Frame = {0, 0, 320, 480}) UICollectionView -- (firstCollectionView, Tag = 0, Frame = {0, 0, 320, 480}) UICollectionView - 我有一个带有单视图控制器的示例应用程序.控制器的视图的子视图如下所示

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1023371.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存