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】:在包含集合视图的子视图控制器中,在viewDidLoad
和viewDidLayoutSubviews
方法中添加代码,如下所示。它应该可以解决您的问题。
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 中的标签文本未更新