我有一个自定义的UICollectionViewCell
,我通过像一样注册它,将它从视图控制器中退出队列
[self.calendarView registerNib:[UINib nibWithNibName:NSStringFromClass([DayCell class]) bundle:nil] forCellWithReuseIdentifier:dayCell];
然后像那样排队
cell = [collectionView dequeueReusableCellWithReuseIdentifier:dayCell forIndexPath:indexPath];
我的问题是,哪个UICollectionViewCell
init方法允许我访问单元格的reuseIdentifier
?awakeFromNib
和initWithCoder:
方法都会被调用,但是,它们都会为self.reuseIdentifier
记录(null)
。
这是一个问题,因为我想使用相同的UICollectionViewCell
类,但使用不同的reuseIdentifier
来实现外观略有不同的单元格,并且我想在初始化时执行一次样式设置。例如,具有dayCellDisabled
reuseIdentifier
的细胞将具有较浅颜色的标签。
我发现一个有效的解决方案是不覆盖任何init或唤醒方法,而是在这个方法中配置我的可重用视图
- (void)didMoveToSuperview {};
显然,当视图被添加到其处理程序时,这个方法只被调用一次。我测试并确认了添加到UICollectionView
中的可重用UICollectionViewCell
的情况。