Un UIViewController gère une référence à un UICollectionView. Le contrôleur doit modifier la disposition de flux intégrée à l'aide de UICollectionViewDelegateFlowLayout.
Il est assez facile de définir la source de données de la vue sur soi:
MyViewController.m
- (void)viewDidLoad
{
self.collectionView.dataSource = self;
}
Mais comment définir le contrôleur pour qu'il soit la disposition de flux délégué de la vue?
- (void)viewDidLoad
{
self.collectionView.dataSource= self;
// self.collectionView.??? = self;
}
J'ai essayé:
- (void)viewDidLoad
{
self.collectionView.dataSource= self;
self.collectionView.collectionViewLayout = self;
}
Mais j'obtiens l'erreur: "Types de pointeurs incompatibles affectant ...".
Le fichier d'en-tête de collection ressemble à ceci:
MyViewController.h
@interface MyViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
la source
self.collectionViewLayout = UICollectionViewFlowLayout()
,self.collectionViewLayout = [[UICollectionViewFlowLayout alloc]init]
Selon la réponse précédente, juste un exemple d'utilisation. Ce n'est vraiment pas clair mais je peux montrer comment cela fonctionne:
la source
Mes deux cents pour macOS Mojave - Swift
(Je suis tombé ici à la recherche de
NSCollectionView
... je sais que la question portait surUICollectionView
...)Tout ce qui est dit ci-dessus (la spécification du délégué implique également la taille de la cellule) est également correcte pour macOS.
REMARQUE : si vous écrivez:
la méthode:
sera appelé.
Si elle est supprimée, aucune méthode déléguée ne sera appelée. (car la classe n'obéit pas au protocole).
la source