2

我一直在尝试将 UICollectionReusableView 子类化为非故事板 iPad 项目。我在 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;

}

谁能指出我正确的方向?

4

2 回答 2

8

如果您使用情节提要并选择页眉/页脚复选标记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将被调用。

于 2013-03-26T10:00:14.867 回答
4

就我而言,initWithFrame:第一次出队时会自动调用它。尝试实现这个方法,看看它是否有效。

于 2012-11-02T08:09:17.147 回答