ios uicollectionview flowlayout

ios - uicollectionview programmatically swift



Cómo configurar UICollectionViewDelegateFlowLayout? (2)

Un UIViewController mantiene una referencia a un UICollectionView. El controlador debe modificar el diseño de flujo incorporado utilizando UICollectionViewDelegateFlowLayout.

Es bastante fácil establecer la fuente de datos de la vista en uno mismo:

MyViewController.m

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

Pero, ¿cómo configuro el controlador para que sea el diseño de flujo delegado de la vista?

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

He intentado:

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

Pero me aparece el error: "Asignación de tipos de punteros incompatibles ...".

El archivo de encabezado de colección se ve así:

MyViewController.h

@interface MyViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>


De acuerdo con la respuesta anterior solo ejemplo de uso. Realmente no está claro, pero puedo mostrar cómo funciona:

@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


Solo self.collectionView.delegate = self; . Tenga en cuenta que UICollectionViewDelegateFlowLayout hereda de UICollectionViewDelegate .

Admito que al principio puede pillar desprevenido.

Ah, y esto solo funcionará si self.collectionView.collectionViewLayout está configurado en su diseño de flujo. (o configurado con initWithFrame:collectionViewLayout: