我有一个UICollectionView,它显示许多子类化为CardCell的UICollectionViewCells。我将变量“类型”传递给- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
中的CardCell,我希望CardCell类能够根据传入的类型加载不同的Nib文件。不同的类型需要具有不同的布局。
问题是我无法在CardCell.m中找出要更改的位置。我尝试使用- (void)prepareForReuse
,但是除非用户滚动,否则不会调用。
最佳答案
您应该在viewDidLoad中注册所需的每个笔尖文件,如下所示(用正确的名称替换笔尖文件和标识符):
[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;
}
}
关于iphone - 根据数据更改UICollectionViewCell内容和 Nib 布局,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17711452/