UICollectionViewCell 未显示

Posted

技术标签:

【中文标题】UICollectionViewCell 未显示【英文标题】:UICollectionViewCell not shown 【发布时间】:2016-08-25 07:07:04 【问题描述】:

我正在 ViewController 中构建一个自定义菜单,其中包含两个容器视图控制器。

顶视图是一个 UICollectionViewController(流式布局/水平滚动方向)

底视图是一个 UIPageViewController

一切正常。但是,当我嵌入导航控制器时,collectionviewCell 没有按预期显示,有什么想法吗?

另外,我发现嵌入导航控制器时,下面的函数没有被调用。

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell  

没有嵌入式导航控制器

带有嵌入式导航控制器

【问题讨论】:

您是否在故事板文件中设置了数据源/委托? @RutgerHuijsmans,是的。在嵌入导航控制器之前一切正常 【参考方案1】:

在包含集合视图的子视图控制器中,在viewDidLoadviewDidLayoutSubviews 方法中添加代码,如下所示。它应该可以解决您的问题。

override func viewDidLoad() 
    super.viewDidLoad()
    self.automaticallyAdjustsScrollViewInsets = false


override func viewWillLayoutSubviews() 
    super.viewWillLayoutSubviews()
    self.collectionView.contentInset = UIEdgeInsetsMake(self.topLayoutGuide.length,
                                                        0.0,
                                                        self.bottomLayoutGuide.length,
                                                        0.0)

原因是,默认情况下,UIViewController 实例通过更新 UIScrollView 子类的 contentInset 来响应位于导航控制器内部(在您的情况下是 UICollectionView)。所以在这里你只是说不要自动更新插图。

【讨论】:

以上是关于UICollectionViewCell 未显示的主要内容,如果未能解决你的问题,请参考以下文章

图像未显示在 UICollectionViewCell 中

将布局更改为自定义类后,UicollectionViewCell 未显示

出队的 UICollectionViewCell 未刷新

UICollectionViewCell 中的标签文本未更新

处理 UICollectionViewCell 中的滚动视图项目(单元格未出现)

iOS - 未应用我的 UICollectionViewCell 上的自定义