自定义 UICollectionViewCell 的 UILabel 为 nil

UILabel of custom UICollectionViewCell is nil

我尝试在故事板中制作自定义 UICollectionViewCell。我有 CustomCell.xib、CustomCell.h 和 CustomCell.m。在 .xib 中,Classname 被链接并且标识符被设置为 "cell"。 .xib 包含 1 个 UIImage 和 2 个 UILabel,它们都有 IBOutlets 到 .h class.

在我使用它的 ViewController 中,我有一个故事板文件,其中包含 VC,其中包含一个 UICollectionView,其中包含 1 个已更改为我的 "customCell" class 也得到了标识符 "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;
}

此处当我调试并将鼠标保持在 "cell" 上方时,它显示 "titleLabel = nil" 和 "valueLabel = nil"。

为什么没有加载?

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

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

选择 1 个选项并坚持下去。如果您不打算在其他视图中使用该单元格,那么请使用故事板,如果您要使用 XIB 并加载并注册它。