89

のセクションにUICollectionView画像付きのヘッダーが必要です。

次の手順に従いました。

  • 絵コンテで、私のアクセサリーとしてヘッダーを割り当てましたUICollectionView
  • 識別子を与えた
  • そのためのサブクラスを作成しましUICollectionReusableView
  • カスタム クラスをストーリーボードのクラスに割り当てます。
  • ImageViewをヘッダー アクセサリに付けます
  • ファイルImageViewのカスタムクラスにアウトレットを作成しました.h
  • に以下を実装しましたviewDidLoad:

 

[self.collectionView registerClass:[ScheduleHeaderView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:headerIdentifier];

-(UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
    UICollectionReusableView *reusableview = nil;

    if (kind == UICollectionElementKindSectionHeader)
    {
        ScheduleHeaderView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:headerIdentifier forIndexPath:indexPath];

        headerView.headerImageView.image = [UIImage imageNamed:@"blah.png"];

        reusableview = headerView;
    }

    return reusableview;
}

すべてのセルとそのセクションを確認できるので、データソース メソッドとデリゲート メソッドが機能していることがわかります。ただし、ヘッダーはありません。上記のメソッドにブレークポイントを設定しましたが、呼び出されることはありません。

私は何を間違っていますか?

4

12 に答える 12

21

現在のインターフェイスに UICollectionViewDelegateFlowLayout を追加しましたか? これは私にとってはうまくいきました。

@interface MyViewController () <UICollectionViewDelegateFlowLayout>

迅速:

class MyViewController: UICollectionViewDelegateFlowLayout {

于 2015-01-17T04:13:52.353 に答える
5

迅速なバージョンがあります:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
    let size = CGSize(width: 400, height: 50)
    return size
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize {
    let size = CGSize(width: 400, height: 50)
    return size
}

XCode (バージョン 7.3.1) は、オートコンプリートでこれらのメソッドを提案しません!

ヘッダーだけが必要な場合は、ヘッダー メソッドを保持してください。

于 2016-08-15T12:57:17.930 に答える
0

ジェネリック サブクラスがある場合は 、Swift 名 ( https://bugs.swift.org/browse/SR-2817 )と異なる場合は、 ObjC デリゲート メソッド名を指定するように注意する必要があります。

@objc (collectionView:viewForSupplementaryElementOfKind:atIndexPath:)
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
...
于 2020-10-31T22:06:49.183 に答える