collectionView:cellForItemAtIndexPath:为什么我的视图没有子视图?

时间:2014-11-18 13:59:50

标签: ios swift uicollectionviewcell

请考虑以下代码:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("DataItemCell", forIndexPath: indexPath) as DataItemCollectionViewCell

    println("\(cell.parametersView.subviews.count)")

    return cell
}

和单元格的视图层次结构:

view hierarchy

我无法弄清楚为什么输出为0

我想要实现的是递归循环遍历parametersView的所有后代。

3 个答案:

答案 0 :(得分:4)

我尝试模拟一个类似的项目,我遇到了同样的问题(我的原型单元没有被使用过)。请确保您没有

    self.collectionView.registerClass(UICollectionViewCell, forCellWithReuseIdentifier: reuseIdentifier)

    self.collectionView.registerClass(DataItemCollectionViewCell, forCellWithReuseIdentifier: "DataItemCell"DataItemCollectionViewCell)

代码中的任何位置。

通常,func viewDidLoad()函数中有一个。

编辑:

如果您仍有问题,请通过邮件向我发送邮件。

答案 1 :(得分:2)

我做了我自己的集合视图并尝试复制你的问题,我注意到它的子视图忽略了所有UIlabels,但是如果添加,例如UIImageView,则数组子视图会有这个问题,this question遇到了类似的问题,但他们提供的解决方案并不适用于我。
作为一种解决方法,您可以将标签IBOutlet链接到您的单元格原型DataItemCollectionViewCell,我知道它远非干净,但如果您真的绝望,您可以试试。
另外,我使用的是Xcode Version 6.1(6A1052d),所以他们可能在这个新版本的UILabel中改变了一些东西。

答案 2 :(得分:1)

您的参数视图似乎被添加为单元格的子视图,但未设置单元格的parametersView属性。确保您的插座连接在storyboard / xib中。

我敢打赌,如果你打印cell.parametersView,你就会没有。