子类 UICollectionViewCell 不显示

Subclassed UICollectionViewCell is not displaying

为什么我的子classed 单元格不显示?

我试过从 NibinitWithCoderinitWithFrame 调用 awake 但是 none 的属性正在显示

 @interface PhotoCollectionViewCell : UICollectionViewCell
 @property (strong, nonatomic) IBOutlet UIImageView *photoImageView;
 @end

在我的 .m 文件中

 @implementation PhotoCollectionViewCell
 -(void)awakeFromNib {
  self.photoImageView.frame = self.bounds;
  self.backgroundColor = [UIColor lightGrayColor];
 }

 -(id)initWithCoder:(NSCoder *)aDecoder {
  self = [super initWithCoder:aDecoder];
  if (self) {
    self.photoImageView.frame = self.bounds;
    self.backgroundColor = [UIColor lightGrayColor];
  }
  return self;
 }

我的单元格在 interfacebuilder 中的 class 设置为 PhotoCollectionViewCell 并且在 interfacebuilder

中正确设置了重用标识符
 @interface HomeViewController () {
   NSMutableArray *photosArray;
 }
 @end

homeview.m文件

 -(void)viewDidLoad {
   [self.collectionView registerClass:[PhotoCollectionViewCell class] forCellWithReuseIdentifier:@"photoCell"];
   photosArray = [[NSMutableArray alloc] init];
   UIImage *placeholder = [UIImage imageNamed:@"placeholder.png"];
  [photosArray addObject:placeholder];
 }

 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
   return photosArray.count;
 }

 - (PhotoCollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
   PhotoCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"photoCell" forIndexPath:indexPath];
    cell.photoImageView.image = [photosArray objectAtIndex:indexPath.row];
    return cell;
 }

在 homeview.m 中,您应该注册 NIB 而不是 class。

UINib *cellnib = [UINib nibWithNibName:PhotoCollectionViewCell bundle:nil];
[self.collectionView registerNib:cellnib forCellReuseIdentifier:@"photoCell"];

您不需要注册 class 或 nib。这就是你在情节提要中已经在做的事情。通过注册 class,您将覆盖情节提要,您将获得您的手机,但连接了 none 个插座。

删除行...

[self.collectionView registerClass:[PhotoCollectionViewCell class] forCellWithReuseIdentifier:@"photoCell"];

您不需要它,因为您正在 Storyboard 中执行它。