It can be implemented either way, but I would probably go with one collection view. Splitting it up would be done by different sections which you would implement by using the function
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 3
}
Then you would decide the number of items in each section with:
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 3
}
Then you would define the contents of each cell with:
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath)
// Configure the cell
return cell
}
Then you would move onto a new viewcontroller when they selected a cell using
override func collectionView(collectionView: UICollectionView, shouldSelectItemAtIndexPath indexPath: NSIndexPath) -> Bool {
return true
}
indexPath has indexPath.section and indexPath.row which allow you to access exact loccations of each cell when needed in the functions. You will also need to set up a delegate/datasource for the collectionView to make it work and call collectionView.reloadData() anytime the contents of the cells are updated without leaving the viewController. Using a header is easier then a label if you use a single collectionView with 3 sections, and if you use 3 table views, using a label or a header are simularly as complicated, but I don't recommend this way. And last... link to collectionView tutorial