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つのサブビューを追加する必要があります。1つはヘッダー用、もう1つはコレクションビュー用です。コントローラーのメインビューではなく、その下部のサブビューにコレクションビューを挿入します。collectionView:viewForSupplementaryElementOfKind:atIndexPath:にあるコードを削除します(セクションヘッダーも必要な場合を除く)。

于 2012-11-24T16:42:53.507 に答える