ios - 收藏 View 在闪烁后不显示任何项目

标签 ios swift uicollectionview uicollectionviewcell

我在使用 UICollectionView 时遇到了这个奇怪的问题。我通过 xib 文件创建了一个包含 UICollectionView 的自定义 View Controller 。然后我将自定义 View Controller 添加到主视图并在添加后为 Collection View 填充数据。 但是每次显示 View 时, Collection View 都会闪烁,然后显示空白,没有项目?!真的很奇怪,我以前从来没有见过?!您可以在下面的视频中看到它: https://youtu.be/Pwn8cufpQ1Y

这是我添加自定义 View 的方法:

    let list = HorizontalListViewController(nibName: "HorizontalListViewController", bundle: nil)

    list.view.translatesAutoresizingMaskIntoConstraints = false
    self.contentView.addSubview(list.view)
    let constraintTop = NSLayoutConstraint(item: list.view, attribute: .Top, relatedBy: .Equal, toItem: self.contentView, attribute: .Top, multiplier: 1, constant: self.contentViewHeight.constant)
    let constraintLead = NSLayoutConstraint(item: list.view, attribute: .Leading, relatedBy: .Equal, toItem: self.contentView, attribute: .Leading, multiplier: 1, constant: 0)
    let constraintTrail = NSLayoutConstraint(item: list.view, attribute: .Trailing, relatedBy: .Equal, toItem: self.contentView, attribute: .Trailing, multiplier: 1, constant: 0)
    let constraintHeight = NSLayoutConstraint(item: list.view, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: CGFloat(LIST_VIEW_HEIGHT))
    list.view.addConstraint(constraintHeight)
    self.contentView.addConstraints([constraintTop, constraintLead, constraintTrail])

    list.setList(datas, title: title)

在 viewDidLoad 中注册单元格:

// Do any additional setup after loading the view.
    self.collectionView.dataSource = self
    self.collectionView.delegate = self
    self.collectionView.registerNib(UINib(nibName:"HorizontalListCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: CELL_IDENTIFIER)

你以前见过这个问题吗?我该如何解决?

编辑 1:

我尝试了 Santosh 给出的解决方案,但结果仍然相同,但现在单元格在消失前出现的时间更长了。这是视频:https://youtu.be/8H4KqY6JJNs

编辑 2:

我尝试使用 Storyboard创建自定义 View Controller ,但单元格仍然不断消失

编辑 3:

我安装了 FLEX 并使用它来调试 UI,这是我得到的: cell.hidden = YES

如您所见,隐藏属性设置为 YES。我仔细检查了每一行代码,确定我没有设置单元格的隐藏属性。所以我认为在某个时候,某个地方, Collection View 会自动将其单元格设置为隐藏

最佳答案

我真傻,我忘了添加 addChildViewController 和 didMoveToParentViewController 方法。添加 subview 后添加这些方法,一切都会好起来的。

关于ios - 收藏 View 在闪烁后不显示任何项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37975777/

相关文章:

ios - 在 Cocoa Pods 中安装 smart、fhir 框架后 Apple Mach-O 链接器错误

ios - 如何修复 UICollectionViewCell 中的图像高度?

swift - 快速在 UICollectionView 上添加 Youtube 缩略图

ios - Storyboard中包含多个部分的 UICollectionView 设置

iphone - 背景音频 - 锁定屏幕上的图像

ios - 如何让我的 searchBar TableView 执行 segue

ios - 为什么 SCNNode.presentation.position 相对较慢,有解决方法吗?

ios - XMPP muc room 一旦用户离线 iOS

ios - 关于 heightForRowAt 和在 UITableView 中设置 rowHeight 的区别

ios - SwiftUI - 为什么这个选择器的值变成 "x – 2"?