使用自定义xib和contentView对UICollectionViewCell进行子类化

时间:2015-09-28 22:57:20

标签: ios xib uicollectionviewcell

我使用File>的Xcode UI创建了我的子类;新>文件...> Cocoa Touch Class(也检查创建xib文件)...完成。

我将子视图直接添加到集合视图单元格的UICollectionView子视图中:

enter image description here

我已经使用contentView注册了子类和nib,并且它们都运行良好。但是,当我以编程方式访问我的集合视图单元格的func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCellWithReuseIdentifier(CellIdentifiers.Category, forIndexPath: indexPath) as! CategoryCollectionViewCell let category = categoryForIndexPath(indexPath) cell.textLabel.text = titleForCategory(category) cell.contentView.backgroundColor = UIColor.redColor() return cell } 属性以设置其背景颜色时,它不会更改。

contentView

在lldb中,我的contentView的地址为: 0x13fdc3550 ,文本标签的超级视图(我假设应该是UICollectionViewCell)的地址为 0x000000013fdc36b0 < / strong> - 所以他们必须是不同的。

如何使用自定义xib成功将contentView子类化,并通过contentView属性访问内容视图?

P.s,有趣的是如果我将这个class OuterClass { enum MyEnum { case ThingOne case ThingTwo } } // Error: Invalid use of '()' to call a value of non-function type '[OuterClass.MyEnum.Type]' var emptyEnumArray = [OuterClass.MyEnum]() emptyEnumArray.append(.ThingOne) 属性的隐藏设置为true,那就有效。

1 个答案:

答案 0 :(得分:0)

Text Label的superView是您拖入单元格的UIView。它应该是单元格contentView的子视图。因此,当您将contentView的hidden设置为true时,所有它的子视图也都隐藏了。但是,当您将contentView的backgroundColor设置为某个内容时,您拖入单元格的视图将覆盖它。您可以检查文本标签的superview的超级视图,看它是否与lldb中的contentView地址匹配。

因此,您可以直接更改该视图的backgroundColor或更改单元格的布局,删除该视图。