If the layout doesn't return any size for the collection view, for example, or any size for the layout objects, then a cell will never be created. Also, the frames in the layout objects have to be within the visible area of the collection view.
cellForItemAtIndexPath: is not called when using custom UICollectionViewLayout subclass
-
30-06-2022 - |
Question
When using my custom UICollectionViewLayout
subclass, cellForItemAtIndexPath:
is not called (I checked using breakpoints and debug output). This is how i use the custom layout:
- (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"];
}
But when i change the above code to use UICollectionViewFlowLayout
instead of my custom subclass, cellForItemAtIndexPath:
is called.
Could it be that some code from my custom layout subclass prevents cellForItemAtIndexPath
from being called?
Solution
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow