我有一个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/

10-09 02:41