如何设置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;
。 请注意, UICollectionViewDelegateFlowLayout
inheritance自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