Un UIViewController mantiene una referencia a un UICollectionView. El controlador debe modificar el diseño de flujo integrado mediante UICollectionViewDelegateFlowLayout.
Es bastante fácil configurar la fuente de datos de la vista en sí misma:
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 aparece el error: "Tipos de puntero incompatibles que asignan ...".
El archivo de encabezado de la colección se ve así:
MyViewController.h
@interface MyViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
fuente
self.collectionViewLayout = UICollectionViewFlowLayout()
,self.collectionViewLayout = [[UICollectionViewFlowLayout alloc]init]
Según respuesta anterior solo ejemplo de uso. Realmente no está claro, pero puedo mostrar cómo funciona:
fuente
Mis dos centavos por macOS Mojave - Swift
(Me he caído aquí buscando
NSCollectionView
... sé que la pregunta era sobreUICollectionView
...)Todo lo dicho anteriormente (especificar delegado también implica el tamaño de celda) también es correcto para macOS.
NOTA : Si escribe:
el método:
será llamado.
Si se elimina, no se llamará a ningún método delegado. (ya que la clase no obedece al protocolo).
fuente