自定义 UICollectionViewCell 的 UILabel 为 nil

Posted

技术标签:

【中文标题】自定义 UICollectionViewCell 的 UILabel 为 nil【英文标题】:UILabel of custom UICollectionViewCell is nil 【发布时间】:2015-02-13 14:55:53 【问题描述】:

我尝试在情节提要中制作自定义 UICollectionViewCell。我有 CustomCell.xib、CustomCell.h 和 CustomCell.m。在 .xib 中,类名被链接,标识符设置为“单元格”。 .xib 包含 1 个 UIImage 和 2 个 UILabel,它们都具有 .h 类的 IBOutlets。

在我使用它的 ViewController 中,我有一个 Storyboard 文件,其中包含 VC,其中包含一个 UICollectionView,其中包含 1 个 UICollectionViewCell,它已更改为我的“customCell”类,并且还获得了标识符“cell” .

VC 是<UICollectionViewDataSource, UICollectionViewDelegate>,方法正在调用。

然后:

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
    NSString *identifier = @"cell";

    CustomCell *cell = (CustomCell *)[collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

    cell.valueLabel.text = @"testtext";
    cell.valueLabel.textColor = [UIColor whiteColor];

    cell.titleLabel.text = @"TEST";
    cell.titleLabel.textColor = [UIColor whiteColor];

    cell.backgroundColor = [UIColor grayColor];

    return cell;

在这里,当我调试并将鼠标保持在“单元格”上方时,它显示“titleLabel = nil”和“valueLabel = nil”。

为什么没有加载?

有趣的旁白:我在黑色背景上看到一些灰色矩形。所以有些东西在起作用。但是自定义的 UILabel 不存在。

【问题讨论】:

【参考方案1】:

您已经定义了两次单元格,一次在 XIB 中,一次在情节提要中。不使用 XIB 版本,因为您从不加载它并将其提供给集合视图。正如您在故事板中命名的单元格是使用的单元格。您的子类都在 XIB 中,因此您在运行的应用程序中看到的结果是 Storyboard 中的空版本。

选择 1 个选项并坚持下去。如果您不打算在其他视图中使用该单元格,则使用情节提要,如果您要使用 XIB 并加载并注册它。

【讨论】:

啊!这听起来确实不错。我认为不使用情节提要是过时的代码,应该在新的 ios8 项目中避免使用。但是是的,我在很多视图中都需要它,这就是我有 xib 的原因。我会试一试。感谢您的快速答复! 谢谢!它与 RegisterNib 一起使用并删除了故事板中的单元格:)

以上是关于自定义 UICollectionViewCell 的 UILabel 为 nil的主要内容,如果未能解决你的问题,请参考以下文章

XCTest 与自定义 UICollectionViewCell

UICollectionViewCell 内带有 UITableView 的自定义单元格

从自定义 UICollectionViewCell 获取正确的按钮

如何创建自定义 UICollectionViewCell

如何通过 NSArray 显示自定义 UICollectionViewCell?

如何与自定义 UICollectionViewCell 单元格交互