I want to create a screen layout . A main UICollectionView class scrolling horizontally on the top 1/3 of the screen, followed by a table on the bottom 2/3, but in the table I would like to slide multiple images horizontally, so I thought of putting another collection view in the table cell. I've connected the datasource and delegate for the main collection view to the main view controller and that works. the table view is connected up to the main view controller as well.

Screenshot of IB shows what I want to do, only able to do what is shown on left. Can only implement main collectionview and underneath table.

want to create main collectionview and table with collection view in cells with headers on top of each row.

screen shot

When I connect the second collectionview( the one in the table) either to the main viewcontroller or to the custom tablecell, i get various different runtime errors.

When connected to the tableview I get this error:

UITableView collectionView:numberOfItemsInSection:]: unrecognized selector sent to instance 0x7fb009064800

My code is attached. Unfortunately, I cannot get the UICollectionview to appear in the Table.

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


}

extension ViewController: UICollectionViewDataSource, UICollectionViewDelegate {

 func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    return 1
}

 func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 10
}

 func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("MainCell", forIndexPath: indexPath) as! CollectionViewCell
    return cell
}

}

extension ViewController: UITableViewDataSource, UITableViewDelegate {

 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 10
}

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("TableCell", forIndexPath: indexPath) as! TableViewCell
    return cell
}


}

TableViewCell class

import UIKit

class TableViewCell: UITableViewCell {

@IBOutlet weak var subCollectionViewObject: UICollectionView!

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

}

extension TableViewCell: UICollectionViewDataSource, UICollectionViewDelegate {


func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    return 1
}

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 15
}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let subCell = collectionView.dequeueReusableCellWithReuseIdentifier("SubCell", forIndexPath: indexPath) as! SubCollectionViewCell
    return subCell
}
}

import UIKit

class CollectionViewCell: UICollectionViewCell {

@IBOutlet weak var mainImage: UIImageView!
}

import UIKit

class SubCollectionViewCell: UICollectionViewCell {

@IBOutlet weak var subImage: UIImageView!


 }
1

There are 1 best solutions below

0
On

Solved the issue using a scrollview inside a tableview. Easier for me to conceptualize and implement.