Bei Verwendung meiner benutzerdefinierten Unterklasse UICollectionViewLayout
wird cellForItemAtIndexPath:
nicht aufgerufen (ich überprüft mit Haltepunkten und Debug-Ausgabe). Dies ist, wie ich das benutzerdefinierte Layout verwenden:cellForItemAtIndexPath: wird nicht aufgerufen, wenn benutzerdefinierte UICollectionViewLayout-Unterklasse verwendet
- (void)viewDidLoad
{
[super viewDidLoad];
DMSGridLayout* gridLayout = [[DMSGridLayout alloc] init];
// UICollectionViewFlowLayout* flow = [[UICollectionViewFlowLayout alloc] init];
// [flow setItemSize:CGSizeMake(150, 150)];
UICollectionView *collection = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:gridLayout];
collection.delegate = self;
collection.dataSource = self;
self.collectionView = collection;
[self.view addSubview:self.collectionView];
[self.collectionView registerClass:[DMSGridCell class] forCellWithReuseIdentifier:@"CollectionCell"];
}
Aber wenn ich den obigen Code ändern UICollectionViewFlowLayout
statt meiner benutzerdefinierten Unterklasse zu verwenden, wird cellForItemAtIndexPath:
genannt.
Könnte es sein, dass ein Code aus meiner benutzerdefinierten Layoutunterklasse verhindert, dass cellForItemAtIndexPath
aufgerufen wird?
Ja könnte es. Sie müssen einige davon anzeigen. Wenn das Layout beispielsweise keine Größe für die Sammlungsansicht oder eine beliebige Größe für die Layoutobjekte zurückgibt, wird nie eine Zelle erstellt. Haben Sie alle Methoden implementiert, wie in der Dokumentation beschrieben? – jrturton
Vielen Dank. Ich habe den Ursprung der Zellenframes vermasselt ... es war außerhalb des sichtbaren Bereichs. Es war also richtig, dass 'cellForItemAtIndexPath' nicht aufgerufen wurde. – flather
Ok, ich habe meinen Kommentar als Antwort gegeben, damit du diesen hier schließen kannst. – jrturton