0

我有一个 UICollectionView,它显示了许多 UICollectionViewCell,我将这些 UICollectionViewCell 归类为 CardCell。我将变量“类型”传递给 CardCell,- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath我希望 CardCell 类能够根据传入的类型加载不同的 Nib 文件。不同的类型需要有不同的布局。

问题是我无法弄清楚在 CardCell.m 中的何处更改它。我尝试使用- (void)prepareForReuse,但除非用户滚动,否则不会调用。

4

1 回答 1

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;
        }
}
于 2013-07-17T22:51:57.607 回答