Subclassed UICollectionViewCell未显示

时间:2015-09-06 19:02:31

标签: ios objective-c uicollectionview uicollectionviewcell

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

我尝试过唤醒来自 Nib initWithCoder以及initWithFrame,但没有任何属性显示

 @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中的单元格类设置为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;
 }

des

dfa

df

2 个答案:

答案 0 :(得分:1)

您无需注册班级或笔尖。这就是你在故事板中已经做过的事情。通过注册课程,您将覆盖故事板,您将获得您的单元格,但没有连接出口。

删除该行...

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

你不需要它,因为你在故事板中这样做。

答案 1 :(得分:-1)

在homeview.m中,你应该注册NIB而不是课程。

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