我有一个显示许多UICollectionViewCell的UICollectionView,我将其子类化为CardCell。我将变量“type”传递给- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
中的CardCell。我希望CardCell类能够根据传入的类型加载不同的Nib文件。不同的类型需要具有不同的布局。
问题是我无法弄清楚在我的CardCell.m中更改此位置。我尝试使用- (void)prepareForReuse
,但除非用户正在滚动,否则不会调用。
答案 0 :(得分:1)
你应该在viewDidLoad中注册你需要的每个nib文件,如下所示(用nib文件和标识符替换正确的名称):
[self.collectionView registerNib:[UINib nibWithNibName:@"RDCell" bundle:nil] forCellWithReuseIdentifier:@"FirstType"];
然后,在itemForRowAtIndexPath中,测试类型并返回正确的单元格类型:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
if (type = @"firstType") {
FirstCell *cell = (FirstCell *) [collectionView dequeueReusableCellWithReuseIdentifier:@"FirstType" forIndexPath:indexPath];
return cell;
}else{
SecondCell *cell = (SecondCell *) [collectionView dequeueReusableCellWithReuseIdentifier:@"SecondType" forIndexPath:indexPath];
cell.whatever .....
return cell;
}
}