带有界面生成器的 UICollectionViewCell

Posted

技术标签:

【中文标题】带有界面生成器的 UICollectionViewCell【英文标题】:UICollectionViewCell with Interface Builder 【发布时间】:2014-12-15 08:41:51 【问题描述】:

我在 Interface Builder 中有以下 nib 设置,其中包含我的 viewController 的主视图(带有 UICollectionView)以及标题和单元格的可重用视图

我在 viewDidLoad 中注册了可重用视图

[self.calendarView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"dayCell"];
[self.calendarView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"dayCellDisabled"];
[self.calendarView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"monthHeader"];

当我尝试像这样访问我的单元格标签时:

UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"dayCellDisabled" forIndexPath:indexPath];    
UILabel *dayLabel = (UILabel *)[cell viewWithTag:1];

生成的dayLabel 为零,因此我无法为其分配值,并且我的视图什么也不显示。这同样适用于我的可重用标题视图及其年份和月份标签。

我在这里做错了什么?

【问题讨论】:

【参考方案1】:

我在这里做错了什么?

几件事:

为单元格重用注册一个 nib 要求单元格是该 nib 中的***对象 - 您不能拥有这样的多内容 nib。要么将单元拉出到单独的笔尖,要么使用故事板和原型 注册一个 用于单元重用意味着您将在代码中构建单元的内容,我猜您并没有这样做。注册类不知道该 nib 文件。 标记几乎总是错误的做法 - 创建一个子类并使用插座代替。

【讨论】:

感谢您的建议 - 我为单元格和标题视图创建了单独的类,现在它可以工作了

以上是关于带有界面生成器的 UICollectionViewCell的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView 教程 [关闭]

向 UICollectionview 添加一个顶部标题,该标题已经包含带有标题的部分

UICollectionView 之上的 UIImageView

UICollectionView 垂直滚动最后一项

UICollectionView 滚动到底部不显示整个项目

将最小部署目标升级到 iOS 14 后,UICollectionView 停止显示单元格