CollectionViewにヘッダーとフッダーを表示したいと思って、以下のようにstoryboardを組んだのはいいものの、
collectionView:viewForSupplementaryElementOfKind:atIndexPath: 内で、return headerView;とか、return footerView; だと1つしか返せないので、ヘッダーとフッダーの出し分け方法を探したのだけれど、少し時間がかかったのでメモ。
kindでヘッダーかフッダーか判断して、該当のビューを返す
- kind == UICollectionElementKindSectionHeader → ヘッダー
- kind == UICollectionElementKindSectionFooter → フッダー
/* ヘッダービューを(補助ビュー)生成してビューに返す */
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
UICollectionReusableView *reusableview = nil;
if (kind == UICollectionElementKindSectionHeader) {
headerView = [self.mCollectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"Header" forIndexPath:indexPath];
//headerに画像をセット
NSURL* imageUrl = [NSURL URLWithString:brandDetail.dBrandIconImage];
UIImage *placeholderImage = [UIImage imageNamed:@"code.png"];
[headerView.mBrandView sd_setImageWithURL:imageUrl placeholderImage:placeholderImage];
headerView.mBrandName.text = brandDetail.dBrandName;
reusableview = headerView;
}
if (kind == UICollectionElementKindSectionFooter){
footerView = [self.mCollectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"Footer" forIndexPath:indexPath];
reusableview = footerView;
}
return reusableview;
}
何か間違ございましたら、ご指摘お願いします。