在 UICollectionView 中滚动 2-3 次后单元格消失
Posted
技术标签:
【中文标题】在 UICollectionView 中滚动 2-3 次后单元格消失【英文标题】:Cell disappearing after scrolling 2 - 3 times in UICollectionView 【发布时间】:2017-01-11 13:43:23 【问题描述】:滚动我的UICollectionView
时遇到一个奇怪的问题。它显示了一个空白视图,其中没有任何单元格。
它奇怪地隐藏了我的单元格或删除了我的单元格,我不知道,但我找不到任何解决方案。
我已经从 SO 尝试了这些解决方案:
第一个:尝试创建UICollectionViewFlowLayout
的自定义类并按照指示使用所有不同的方法进行操作,但无法解决我的问题。
第二次:尝试了以下方法来重新归因和重新计算我的单元格大小:
-(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
return YES;
我关注的链接:
阙1:UICollectionView's cell disappearing
阙2:UICollectionView items disappear when scrolling with my own UICollectionViewFlowLayout subclass
请指导我使用自定义单元格的简单集合视图有什么问题。
参考图片:
滚动前:
滚动后:
【问题讨论】:
请先使用tour,然后学习创建Minimal, Complete, and Verifiable example 并咨询您的Rubber Duck。 【参考方案1】:我在这里回答我自己的问题。
因为我在这个问题上被困了两天。
当我使用 CollectionViewController
并将 Controller
视图添加到我当前使用的控制器中时,它正在消失我的集合视图单元格。
原因:由于
ARC
释放了delegate
和datasource
连接,而我正在收集视图无法获取单元格 从上到下滚动。
解决方案:
我用两种方法解决这个问题。
第一个:在我当前的VC
中创建CollectionViewController
,而不是在服务和JSON
Parser 类中,因为delegate & datasource
连接丢失。
以下代码中最重要的部分是addChildViewController
,它不会释放委托连接并按预期工作。
UIStoryboard *mainStoryBoard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
CardListViewController *objCardListViewController = [mainStoryBoard instantiateViewControllerWithIdentifier:@"CardListViewController"];
objCardListViewController.view.frame = CGRectMake(0, 0,self.cardMainView.frame.size.width, self.cardMainView.frame.size.height);
[self.cardMainView addSubview:objCardListViewController.view];
[self addChildViewController:objCardListViewController];
但根据我的要求,我在很多地方都需要这个集合视图 所以我需要概括这个集合视图。
所以我选择了第二种方式,即ContainerView
和添加子控制器,我将这个CollectionViewController
与容器视图连接起来,这样我就可以在需要这个列表的许多地方使用它。
奇怪但真实。
希望这对遇到同样问题的人有所帮助。
感谢并祝编码愉快。
【讨论】:
这正是我的问题,谢谢。这应该更明显:)addChild(controller)
救了我的命,谢谢!以上是关于在 UICollectionView 中滚动 2-3 次后单元格消失的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 1 UICollectionView 中使用 collectionViewCell 2 Cell 吗?
在 UICollectionView 中滚动时绕过 UIScrollViewDelegate