2

我正在子类化UICollectionViewController.

UITableView标题在我拥有的每一行单元格之后重复。我需要标题是“单一的”并且始终位于屏幕顶部(如导航栏)。

我正在使用以下代码:我的UICollectionViewController班级:

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
    return [categoryArray count] / 2;
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return 2;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CategoryCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CategoryCell" forIndexPath:indexPath];
    CategoryViewModel *category = [categoryArray objectAtIndex:(indexPath.section*2 + indexPath.row)];
    cell.name.text = category.name;
    cell.image.image = category.image;
    return cell;
}

-(UICollectionReusableView *) collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{
    if(headerIndexPath == nil){
        headerIndexPath = indexPath;
    }
    CategoryScreenHeader *categoryScreenHeader = [collectionView dequeueReusableSupplementaryViewOfKind:
                                         UICollectionElementKindSectionHeader withReuseIdentifier:@"CategoryScreenHeader" forIndexPath:headerIndexPath];
    categoryScreenHeader.headerName.text = @"Some title";
    categoryScreenHeader.headerImage.image = [UIImage imageNamed:@"step-0.png"];
    return categoryScreenHeader;
}

谢谢你。

4

2 回答 2

1

我发现这个精彩绝伦的教程很有效!http://blog.radi.ws/post/32905838158/sticky-headers-for-uicollectionview-using

于 2012-11-29T13:02:28.890 回答
0

UICollectionView 没有像 UITableView 那样的表格标题(据我所知),只有部分标题会随着内容滚动。

如果您想在屏幕顶部保留一个视图,那么您应该向控制器的视图添加 2 个子视图,一个用于标题,一个用于集合视图。将集合视图插入到该底部子视图中,而不是插入到控制器的主视图中。删除您在 collectionView:viewForSupplementaryElementOfKind:atIndexPath: 中的代码(除非您还需要节标题)。

于 2012-11-24T16:42:53.507 回答