O'Reilly logo

iOS 7 Programming Cookbook by Vandad Nahavandipoor

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

5.2. Assigning a Data Source to a Collection View

Problem

You want to provide data to a collection view to render the data on the screen.

Solution

Assign a data source to the collection view using the dataSource property of the UICollectionView class. Your data source has to be an object that conforms to the UICollectionViewDataSource protocol, and it goes without saying that your data source object has to implement the required methods/properties of that protocol.

Discussion

The data source of the collection view, like that in table views, is responsible for providing enough data to the collection view so that it can render its contents on the screen. The way things are rendered on the screen is not the data source’s job. That is the layout’s job. The cells that the layout displays on your collection view will ultimately be provided by your collection view’s data source.

Here are the required methods of the UICollectionViewDataSource protocol that you have to implement in your data source:

collectionView:numberOfItemsInSection:

This method returns an NSInteger that dictates to the collection view the number of items that should be rendered in the given section. The given section is passed to this method as an integer that represents the zero-based index of that section. This is the same in table views.

collectionView:cellForItemAtIndexPath:

Your implementation of this method must return an instance of the UICollectionViewCell that represents the cell at a given index path. The UICollectionViewCell ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required