UICollectionView's cellForItemAtIndexPath is not being called
For those who stumble here later.... the reason:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
was not being called was because of the itemSize for the collectionViewFlowLayout's height was too big.
[self.myCollectionViewFlowLayout setItemSize:CGSizeMake(320, 548)];
If I change the height to 410, it will execute cellForItemAtIndexPath.
cellForItemAtIndexPath not called but numberOfItemsInSection does
Ok I think this could be useful for future problems with this...
It was because of constraints on the StoryBoard. I don't really understand why that happens, because I just had fixed an horizontal space. I removed the horizontal space as constraint for that View and everything works fine.
Well, let's life flow.
CollectionView method cellForItemAt indexPath: not being called (Swift)
Hint: CellforRow at:indexPath method won't be called if the size or position of the collectionView is changed before reload, make sure you're not doing that.
cellForItemAtIndexPath is not called for collectionView
[myCollectionView setContentInset:UIEdgeInsetsMake(100, 0, 0, 0)];
Above line solves my problem.
UICollectionView cellForItemAtIndexPath method is not getting called
In your viewDidLoad
method you probably want to add:
self.collectionView.delegate = self;
self.collectionView.dataSource = self;
[self.collectionView reloadData];
easy as that.
When does cellForItemAtIndexPath get called?
or are we not supposed to assume any recurrent functionality
That is correct. I can name some calls you can make that will cause it to be called, but that's not the point. The point is that your job is to be ready to answer this question correctly and quickly at any moment. The runtime calls you as often as it thinks might be necessary in order to display the current set of cells and in order to make future scrolling as smooth as possible. As some poet says: "That's all you know and you need to know."
collectionView cellForItemAtIndexPath called only one time -swift - programmatically
The collectionView(_:cellForItemAt:)
is called only as the cells appear or are about to appear. It won't call it for all of the cells, but only the visible ones (or those about to scroll into view). It is called in a just-in-time manner.
You can also turn on prefetching (which only works if you turn off “Estimate Size” in the collection view’s “Size inspector” IB or manually set the flow layout’s estimatedItemSize
to .zero
), but that only makes it a tiny bit more “eager” in terms of fetching cells (fetching those that are going to scroll into view a bit sooner than it would otherwise). It will not fetch all of the cells, but just those that the OS determines might possibly scroll into view soon.
Related Topics
Invalid Signature - Code Object Is Not Signed at All
What Is the Meaning of This Declaration
How to Draw a Smooth Circle with Cashapelayer and Uibezierpath
Macos on Vmware Doesn't Recognize iOS Device
How to Set a Custom View's Intrinsic Content Size in Swift
Using Convertpoint to Get the Relative Position Inside a Parent Uiview
How to Change Navigation Bar Color in iOS 7 or 6
Load Image from Bundle with iOS
Xcode Instruments Allocations: Look at Live Bytes or Overall Bytes
Change Table to Edit Mode and Delete Rows Inside a Normal Viewcontroller
iOS Documents Directory Size Limit
Alamofire:How to Handle Errors Globally
Width and Height Equal to Its Superview Using Autolayout Programmatically
Playing a Video File from a Server in Swift
Auto Layout to Dynamically Size Uilabel Width
Uiscrollview's Origin Changes After Popping Back to the Uiviewcontroller
A Launch Storyboard or Xib Must Be Provided Unless the App Requires Full Screen