cellForItemAtIndexPath: is not called when using custom UICollectionViewLayout subclass

StackOverflow https://stackoverflow.com/questions/19229059

  •  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?

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top