如何设置UICollectionViewDelegateFlowLayout?

UIViewController维护对UICollectionView的引用。 控制器应该使用UICollectionViewDelegateFlowLayout修改内置的stream布局。

将视图的数据源设置为self很容易:

MyViewController.m

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

但是,如何将控制器设置为视图的委托stream布局?

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

我试过了:

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

但我得到的错误:“不兼容的指针types分配…”。

集合头文件如下所示:

MyViewController.h

 @interface MyViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout> 

只是self.collectionView.delegate = self; 。 请注意, UICollectionViewDelegateFlowLayoutinheritance自UICollectionViewDelegate

我承认一开始可以防范你。

哦,这只会工作,如果self.collectionView.collectionViewLayout实际上设置为您的stream布局。 (或者用initWithFrame:collectionViewLayout:设置)

根据以前的答案只是使用的例子。 它真的不清楚,但我可以显示它是如何工作的:

 @interface PrettyViewController()<UICollectionViewDelegateFlowLayout, UICollectionViewDataSource> //some code @end @implementation PrettyViewController - (void)viewDidLoad { [super viewDidLoad]; self.collectionView.delegate = self;//bingo! right here } #pragma mark - UICollectionViewDelegateFlowLayout - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section { return CGSizeMake([[UIScreen mainScreen] bounds].size.width, 20.0); } @end