为什么我的子类化单元格不显示?
我尝试过唤醒来自 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;
}
答案 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"];