Ein UIViewController verwaltet einen Verweis auf eine UICollectionView. Der Controller sollte das integrierte Ablauflayout mithilfe des UICollectionViewDelegateFlowLayout ändern.
Es ist ziemlich einfach, die Datenquelle der Ansicht auf "Selbst" zu setzen:
MyViewController.m
- (void)viewDidLoad
{
self.collectionView.dataSource = self;
}
Aber wie stelle ich den Controller als Delegate-Flow-Layout der Ansicht ein?
- (void)viewDidLoad
{
self.collectionView.dataSource= self;
// self.collectionView.??? = self;
}
Ich habe es versucht:
- (void)viewDidLoad
{
self.collectionView.dataSource= self;
self.collectionView.collectionViewLayout = self;
}
Aber ich bekomme die Fehlermeldung: "Inkompatible Zeigertypen zuweisen ...".
Die Sammlungsheaderdatei sieht folgendermaßen aus:
MyViewController.h
@interface MyViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
quelle
self.collectionViewLayout = UICollectionViewFlowLayout()
,self.collectionViewLayout = [[UICollectionViewFlowLayout alloc]init]
Nach vorheriger Antwort nur Anwendungsbeispiel. Es ist wirklich nicht klar, aber ich kann zeigen, wie es funktioniert:
quelle
Meine zwei Cent für macOS Mojave - Swift
(Ich bin hierher gefallen auf der Suche nach
NSCollectionView
... Ich weiß, die Frage war ungefährUICollectionView
...)Alles oben Gesagte (die Angabe eines Delegaten impliziert auch die Zellengröße) ist auch für macOS korrekt.
HINWEIS : Wenn Sie schreiben:
die Methode:
wird aufgerufen.
Wenn entfernt, wird keine Delegatmethode aufgerufen. (da die Klasse das Protokoll nicht befolgt).
quelle