UICollectionView reloadData后cell被隐藏

在使用UICollectionView的页面执行:

[self.collectionView reloadData];

执行后,页面变为空白页,调试发现,执行reloadData 后UICollectionView的cell的hidden都变为YES. stackoverflow上很多人说这是UICollectionView的一个bug, 有人给出了解决方案,即在主线程调用reloadData:

dispatch_async(dispatch_get_main_queue(), ^{
                [self.collectionView reloadData];
            });

可是让人疑惑的是,这句代码本来就是在主线程执行,为什么显式调用主线程就可以避免这个bug。

有了解的同学,请留言告诉我。

时间: 2024-10-28 22:18:01

UICollectionView reloadData后cell被隐藏的相关文章

UICollectionView reloadData无法更新的奇怪问题。

近来偶尔用到UICollectionView,对于九宫格之类的布局还是很方便的.但使用过程中却出现一个奇怪的问题,暂时没时间仔细研究.先记录. 在UICollectionViewCell中定义一个图标和一个文本,显示的效果是典型的九宫格.默认会有几条数据,点击最后一个cell会弹出编辑框添加自定义的cell.使用过程中出现的问题时,在第二行最后一个添加的自定义cell,图标怎么都改变不了.如果将整个view切换一下,显示又变成正常了.如下图: 查看打印出来的数据,是正常的.如下: ( { ind

UICollectionView 不同大小Cell 等间距的实现

在IOS项目中有时会用到UICollectionView控件,大家应该都不太陌生,即便有没用过的同学,看一下教程也能轻松的掌握.不过要实现cell大小不同,又要等间距,应该怎么做呢?如下图: 一.首先需要创建EqualSpaceFlowLayout继承UICollectionViewFlowLayout,如下面的代码: #import <UIKit/UIKit.h> @protocol EqualSpaceFlowLayoutDelegate<UICollectionViewDelega

点击cell后 cell的背景不变,cell上的字体颜色发生改变的功能实现

在我们使用音频播放的时候,常常出现播放的时候,被播放的cell的字体有别于其他cell的字体,这样的功能如何实现. 首先在应用上,cell肯定是自己定制的,上面可以放置UIImageView和UILable控件 在点击的时候,被点击的图片和Label的字体颜色发生改变. 我们需要在didSelectRowAtIndexPath方法.cellForRowAtIndexPath方法中分别对cell上的颜色进行改变.最重要的事情是:在cellForRowAtIndexPath方法中添加这样的代码块 f

解决UICollectionView ReloadData闪一下(隐式动画)

方式一: [UIView setAnimationsEnabled:NO]; [collectionView performBatchUpdates:^{ [collectionView reloadData]; } completion:^(BOOL finished) { [UIView setAnimationsEnabled:YES]; }]; 方式二: [UIView animateWithDuration:0 animations:^{ [collectionView perform

UICollectionView设置item(cell)之间间距为0(紧挨在一起的效果)

UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; self.layout = layout; // 设置每格的大小 layout.itemSize = CGSizeMake(DD_SCREEN_WIDTH * 0.5, 80); // 上左下右间距 layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); layout.minimumLine

iOS UITableView reloadData 刷新结束后执行后续操作

如果在reloadData后需要立即获取tableview的cell.高度,或者需要滚动tableview. 如果直接在reloadData后执行代码是有可能出问题的,比如indexPath为nil等等异常情况. [tableView reloadData]并不会等待tableview更新结束后才执行后续代码, 而是立即执行后续代码,然后异步地去计算scrollView的高度,获取cell等等. 如果表中的数据非常大,在一个run loop周期没执行完, 这时就显示tableView视图数据的操

表格里使用text-overflow后不能隐藏超出的文本的解决方法

当把text-overflow设为ellipsis时文本溢出内容就能显示为省略标记,而设为clip时就能把文本溢出的部分裁切掉,不过在表格里面使用text-overflow后依旧不能隐藏超出的文本,具体解决方法祥看本文. 在w3cschool中css3中有个文本相关的属性text-overflow,当把它设为ellipsis时文本溢出内容就能显示为省略标记,而设为clip时就能把文本溢出的部分裁切掉,当然,前提是设置好两个属性,那就是white-space:nowrap(强制文本在一行内显示)及

textview显示三行多余的隐藏点击按钮后显示

首先布局 因为我这个是列表所以这只是一个item <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Re

比 UICollectionView更好用的IGListKit教程

原文:IGListKit Tutorial: Better UICollectionViews 作者:Ryan Nystrom 译者:kmyhy 每个 app 都以同样的方式开始:几个界面,几颗按钮,一两个 list.但随着进度的进行以及 app 膨胀,功能开始发生变化.你简单的数据源开始在工期和产品经理的压力下变得支离破碎.再过一久,你留下一堆庞大得难以维护的 view controller.今天,IGListKit 来拯救你了! IGListKit 专门用于解决在使用 UICollectio