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: