请考虑以下代码:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("DataItemCell", forIndexPath: indexPath) as DataItemCollectionViewCell
println("\(cell.parametersView.subviews.count)")
return cell
}
和单元格的视图层次结构:
我无法弄清楚为什么输出为0
。
我想要实现的是递归循环遍历parametersView
的所有后代。
答案 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
,你就会没有。