UICollectionView页眉和页脚非常奇怪的行为

时间:2014-07-25 03:10:44

标签: ios objective-c uicollectionview

我在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开发研究中,我找不到任何东西。

如果有人需要任何其他信息,请告诉我。但实际上它是我在研究中可以收集的基本实现。

0 个答案:

没有答案