我在UIViewController中实现了一个带有基类UICollectionViewFlowLayout的基类UICollectionView。我的控制器是集合视图委托和数据源。只有项目视图和补充视图是自定义类,没有笔尖。据我所知,一切都是标准的实施。我试图尽可能地保持骨头。
HeaderView是UICollectionReusableView的子类。
这是我的集合视图创建
-(void) viewDidLoad {
[super viewDidLoad];
UICollectionViewFlowLayout *flow = [[UICollectionViewFlowLayout alloc] init];
flow.headerReferenceSize = CGSizeMake(0, 50);
flow.footerReferenceSize = CGSizeMake(0, 50);
flow.itemSize = CGSizeMake(100, 150);
flow.sectionInset = UIEdgeInsetsMake(20, 20, 20, 20);
[flow setScrollDirection:UICollectionViewScrollDirectionVertical];
cellID = @"CollectionCellIdentifier";
headerID = @"header";
footerID = @"footer";
collection = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 70, self.view.frame.size.width, self.view.frame.size.height-70) collectionViewLayout:flow];
[collection registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:cellID];
[collection registerClass:[HeaderView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:headerID];
[collection registerClass:[HeaderView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:footerID];
[collection setDelegate:self];
[collection setDataSource:self];
[self.view addSubview:collection];
}
这是我的补充视图创建
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
HeaderView *header;
NSString *suppID = headerID;
if ([kind isEqualToString:UICollectionElementKindSectionFooter]) {
suppID = footerID;
}
header = (HeaderView *)[collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:suppID forIndexPath:indexPath];
if ([kind isEqualToString:UICollectionElementKindSectionHeader]) {
if (indexPath.section == kInSection) {
header.label.text = @"In Groups";
}
else {
header.label.text = @"Other Groups";
}
}
else {
header.label.text = @"";
}
return header;
}
当我运行时,项目显示正常。第一部分的标题(kInSection)看起来很好。第一部分的底部没有页脚。第二部分(kOutSection)顶部没有标题。这些页脚和标题位于第二部分下方。文本对于第二部分标题是正确的,其中确实出现了。
最奇怪的是,当我将集合视图向上滚动得足够远时,我可以看到第二部分下方的页眉和页脚......当我滚动到应该渲染的位置时,它们会从屏幕中间消失。这真是奇怪。
否则此集合视图工作正常。我可以与项目互动,我可以插入和删除项目等。
UICollectionView是否已知不可靠?我做错了吗?以前有没有经历过这样的事情?在我通常可靠的iOS开发研究中,我找不到任何东西。
如果有人需要任何其他信息,请告诉我。但实际上它是我在研究中可以收集的基本实现。