我一直在尝试在非故事板iPad项目中继承UICollectionReusableView。我在IB中构建了一个视图并将其连接到我的自定义类,在我的集合视图所在的viewController中注册该类以供重用,并在
中正确调用它UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
但是,UICollectionView中的标题区域中没有显示任何内容。我认为我需要使用编码器初始化视图,但我不确定如何正确地执行此操作。我跟着我发现的几个例子,但标题视图仍然没有出现在我的集合视图中。
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
[[NSBundle mainBundle] loadNibNamed:@"CVHeaderView" owner:self options:nil];
[self addSubview:self.categoryNameLabel];
}
return self;
}
有人能指出我正确的方向吗?
答案 0 :(得分:7)
如果您使用故事板并选择页眉/页脚,则会调用initWithCoder:
复选标记。
如果您不使用情节提要(或不点击页眉/页脚)但手动连接,则必须注册自定义类并调用initWithFrame:
。
[self.collectionView registerClass:[GameCardCell class] forCellWithReuseIdentifier:@"GameCardCell"];
[self.collectionView registerClass:[PlayerHeaderView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"PlayerHeaderView"];
[self.collectionView registerClass:[PlayerFooterView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"PlayerFooterView"];
注意:两者都只会被调用一次。如果视图来自缓存prepareForReuse
将被调用。
答案 1 :(得分:3)
在我的情况下,initWithFrame:
在第一次出列时会自动调用。尝试实现此方法,看看它是否有效。