0

UIViewController哪些包含UICollectionView. 还有UICollectionViewCell它有自己的类和 XIB(CurrentCell.h、CurrentCell.m、CurrentCell.xib)。

在我的UIViewController.h

@property (strong, nonatomic) IBOutlet UICollectionView *collection;

在我的UIViewController.m

@synthesize collection;

viewDidLoad

[self.collection registerClass:[CurrentCell class] forCellWithReuseIdentifier:@"cellCurRecipe"];

UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setItemSize:CGSizeMake(120, 90)];
[flowLayout setSectionInset:UIEdgeInsetsMake(5, 10, 5, 10)];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
[self.collection setCollectionViewLayout:flowLayout];

cellForItemAtIndexPath

static NSString *CellIdentifier = @"cellCurRecipe";    
CurrentCell *cell = (CurrentCell *)[self.collection dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];   
Recipes *recipe = [currRecipesArray objectAtIndex:indexPath.item];  
[cell.image setImage: recipe.image]; 
return cell;

但是:如果我直观地点击单元格didSelectItemAtIndexPath方法调用。

已编辑

现在一切正常!

我忘了在 CurrentCell.m 中初始化单元格:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"CurrentCell" owner:self options:nil];

        if ([arrayOfViews count] < 1) {
            return nil;
        }

        if (![[arrayOfViews objectAtIndex:0] isKindOfClass:[UICollectionViewCell class]]) {
            return nil;
        }

        self = [arrayOfViews objectAtIndex:0];
    }
    return self;
}
4

1 回答 1

7

注册笔尖,而不是类。如果单元格完全用代码制作,则只需要注册一个类。如果您使用 xib,则注册它(使用 registerNib:forCellWithReuseIdentifier:)。如果您在情节提要中制作单元格,则不要注册任何内容。

于 2013-08-13T05:54:36.870 回答