我现在正在为我的 UICollectionView 实现一个标题,我现在正在苦苦挣扎,因为标题在第一个单元格上只被调用一次。
这就是我所做的——我声明 UICollectionViewFlowLayout 以编程方式创建 UICollectionView——在本例中为 pickView。然后我添加了两个 xib 文件 - 一个用于单元格,另一个用于标题。我已将这些文件注册到集合视图中,如下所示:
UICollectionViewFlowLayout *layout2 = [[UICollectionViewFlowLayout alloc] init];
self.pickView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, pointView_y, pointView_width, pointView_length) collectionViewLayout:layout2];
self.pickView.backgroundColor = [UIColor whiteColor];
[self.pickView registerNib:[UINib nibWithNibName:@"TodayCollectionViewCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"TodayCollectionViewCell"];
[self.pickView registerNib:[UINib nibWithNibName:@"PickCollectionReusableView" bundle:[NSBundle mainBundle]] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"PickCollectionReusableView"];
//layout2.headerReferenceSize = CGSizeMake(_screenWidth, 50);
[self.pickView setDataSource:self];
[self.pickView setDelegate:self];
[self.view addSubview:self.pickView];
然后我像这样声明标题视图的大小:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section {
return CGSizeMake([Util screenWidth], 50);
}
最后我打电话viewForSupplementaryElementOfKind
来调用这样的头文件:
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
PickCollectionReusableView *reusableview = (PickCollectionReusableView*) [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"PickCollectionReusableView" forIndexPath:indexPath];
PickCellVariable *buf = (PickCellVariable*) _pickArray[indexPath.row];
NSLog(@"buf id = %@, SECTION = %lu", buf.itemID, (long)indexPath.row);
if(buf != nil) {
//reusableview.thumbPic = ;
[reusableview.brandName setTitle:[NSString stringWithFormat:@"%lu", (long)indexPath.row] forState:UIControlStateNormal];
[[reusableview brandName] setBrandName:buf.brandname];
[[reusableview brandName] addTarget:self action:@selector(brandClick:) forControlEvents:UIControlEventTouchUpInside];
[[reusableview settingButton] addTarget:self action:@selector(setting:) forControlEvents:UIControlEventTouchUpInside];
return reusableview;
}
else {
[[reusableview brandName] setBrandName:@""];
return reusableview;
}
}
我放置了断点并添加了 NSLog 行,以确保viewForSupplementaryElementOfKind
在第一个单元格中只调用一次。
我试图找到像我这样的案例,但是关于 UICollectionView 标头的大多数问题是当他们注册类而不是注册 xib 文件时,或者他们忘记设置标题视图的大小。我的只被调用一次,所以这也与重叠无关。我的收藏视图是以编程方式制作的,所以我现在不重新定义任何东西。
可能是什么问题?拜托,任何事情都可以在这里提供帮助。
谢谢你。