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