根据数据更改UICollectionViewCell内容和nib布局

时间:2013-07-17 22:34:40

标签: iphone ios uicollectionview uicollectionviewcell

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

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

1 个答案:

答案 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;
        }
}