在 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 释放了delegatedatasource 连接,而我正在收集视图无法获取单元格 从上到下滚动。

解决方案:

我用两种方法解决这个问题。

第一个:在我当前的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 水平滚动延迟加载单元格

在 UICollectionView 中禁用水平滚动

在 UICollectionView 中滚动时绕过 UIScrollViewDelegate

UITableView中的多个UICollectionView在滚动中交织在一起

uicollectionview 在底部滚动加载更多数据。 iOS 斯威夫特