闪烁后,集合视图不会显示任何项目

时间:2016-06-22 18:32:41

标签: ios swift uicollectionview uicollectionviewcell

我正面临着UICollectionView这个奇怪的问题。我创建了一个自定义视图控制器,其中包含一个xib文件的UICollectionView。然后我将自定义视图控制器添加到主视图,并在添加后填充集合视图的数据。 但每次显示视图时,集合视图会闪烁,然后显示空白,没有项目?!它真的很奇怪,我以前从未见过它?!您可以在下面的视频中看到它: https://youtu.be/Pwn8cufpQ1Y

以下是我添加自定义视图的方式:

    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:

我尝试使用故事板创建自定义视图控制器,但单元格仍然不断消失

编辑3:

我安装FLEX并使用它调试用户界面,这是我得到的: cell.hidden = YES

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

1 个答案:

答案 0 :(得分:1)

傻我,我忘了添加ChildViewController和didMoveToParentViewController方法。添加子视图后添加这些方法,一切都会好的。