1. ホーム
  2. ios

[解決済み] UICollectionViewDelegateFlowLayoutを設定するには?

2022-05-13 11:02:41

質問

UIViewController が UICollectionView への参照を保持している。コントローラは,UICollectionViewDelegateFlowLayout を用いて,組み込みのフローレイアウトを変更する必要がある。

ビューのデータソースをselfに設定するのはとても簡単です。

MyViewController.m

- (void)viewDidLoad
{
    self.collectionView.dataSource = self;
}

しかし、コントローラをビューのデリゲートフローレイアウトに設定するにはどうすればよいのでしょうか?

- (void)viewDidLoad
{
    self.collectionView.dataSource= self;
    // self.collectionView.??? = self; 
}

試してみました。

- (void)viewDidLoad
{
    self.collectionView.dataSource= self;
    self.collectionView.collectionViewLayout = self; 
}

しかし、私はエラーが表示されます: "互換性のないポインタ型は、..."を代入します。

コレクションヘッダーファイルは以下のような感じです。

MyViewController.h

@interface MyViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>

どのように解決するのですか?

ちょうど self.collectionView.delegate = self; . ただし UICollectionViewDelegateFlowLayoutUICollectionViewDelegate .

最初は意表を突かれたのは認めます。

それと、これは self.collectionView.collectionViewLayout が実際にフローレイアウトに設定されている場合のみ機能します。(または initWithFrame:collectionViewLayout: )