UICollectionViewCells不出现在UICollectionView中

vir*_*ndh 17 ios uicollectionview uicollectionviewcell

正如标题所示,我有一个UICollectionViewUIViewControllerIB通过的联系.我有一个UICollectionView叫做的子类imageCell.在viewcontroller viewDidLoad方法中,我注册了这样的类:

CGRect collectionViewRect = CGRectMake(384, 60, 728, 924);
UICollectionViewFlowLayout *flow = [[UICollectionViewFlowLayout alloc] init];
imageCollectionView = [[UICollectionView alloc] initWithFrame:collectionViewRect collectionViewLayout:flow];
[imageCollectionView registerClass:[imageCell class] forCellWithReuseIdentifier:@"Cell"];
imageCollectionView.delegate = self;
imageCollectionView.dataSource = self;
Run Code Online (Sandbox Code Playgroud)

然后我调用一个名为getPhotosin viewDidAppear(因为UI原因)的方法,该方法从服务中获取照片,然后我[imagCcollectionView reloadData];在里面调用getPhotos.

然后在cellForItemAtIndexPath我做以下事情:

imageCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
GRKAlbum *album = [albums objectAtIndex:indexPath.item];
cell.titleLabel.text = album.name;
return cell;
Run Code Online (Sandbox Code Playgroud)

我知道我在这里做错了什么,因为这个方法被调用而cell不是nil,也不是album.

所以,当我运行所有这些代码时,会UICollectionView出现,但没有任何内容.我只能看到背景颜色collectionView.任何帮助都将非常感激.

注意:我没有为我创建一个XIB,imageCell而我正在使用Storyboard.

Ani*_*ese 85

有一些方法可以调试这种情况.

  1. 注册UICollectionViewCell类而不是customCell并设置单元格的背景颜色cellForItem...

  2. 如果单元格出现在第一步中,请尝试使用您自己的单元格类并设置其背景

你在使用故事板吗?然后..

您不必为集合视图注册任何单元格.您可以使用原型单元格,只需为单元格提供正确的ID.您可以在原型单元格中设计所有内容.在所有情况下可能不需要自定义类.

  • 非常感谢..这是非常有用的解决方案.我刚刚删除了[self.collectionView registerClass:[cutomCollectionCell class] forCellWithReuseIdentifier:@"cutomCollectionCell"]; 哇,它工作正常. (13认同)
  • 这个问题困扰了我半天.无法相信它如此简单地解决.我希望下一版的XCode至少会显示一些警告,如果他们认为registerClass是不必要的或者是故事板的不当行为. (6认同)
  • 删除`registerClass`部分对我也有帮助.非常感谢! (4认同)

rde*_*mar 45

如果您在故事板中创建了单元格,则只需删除寄存器类语句.如果您在故事板中创建单元格,则不需要注册任何内容(对于集合视图或表视图)(事实上,如果您这样做,它会搞砸了).您唯一需要做的就是确保在IB中设置标识符.

  • 答案帮助:) (3认同)

Bhu*_*nVU 16

registercell用下面的线代替传统的线路修复了同样的问题

[self.collection registerNib:[UINib nibWithNibName:@"nibname" bundle:nil] forCellWithReuseIdentifier:identifier];
Run Code Online (Sandbox Code Playgroud)

  • 这帮助了我!如果您的单元有 XIB,则使用此方法。我正在使用自动完成并使用 registerClass:forCellWithReuseId: 登陆,这导致我的视​​图无法加载,因此没有显示。 (2认同)