自定义UICollectionViewCell的自定义初始化程序

时间:2014-10-19 23:22:35

标签: ios objective-c uicollectionviewcell

我有一个自定义UICollectionViewCell,它有一个枚举属性,定义了两种类型的单元格。假设一个有一个imageView而另一个有一个UILabel。在这两种类型中,还有其他属性彼此相同。在cellForItemAtIndexPath:方法中,我有:

CustomCollectionViewCell *cell = (CustomCollectionViewCell*)[self.collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];

cell.typeOfCell = enumCellType1; // or enumCellType2

并在CustomCollectionViewCell初始化程序(initWithFrame :)中应该分配什么?在这一点上,我仍然不知道它是什么类型的细胞。

我使用layoutSubviews来设置所有常见属性的框架,此时我知道typeOfCell值,所以我可以设置imageView或UILabel框架。但其中一个必须先在initalizer中分配。

如果我有自定义初始化程序,我可以发送正确的类型并设置属性但不起作用,我试过了。

是否可以创建自定义初始化器,还是需要创建2个自定义CollectionViewCells?

我没有使用任何xib。

感谢。

1 个答案:

答案 0 :(得分:1)

为什么不使用继承?创建一个超类,执行所有常见设置,然后创建两个子类来执行特定设置。然后,您将拥有两个不同的重用标识符,并直接在cellForItemAtIndexPath:

中分配正确类型的单元格

设置单元格“类型”忽略了面向对象的继承,并且还会导致重用问题。