Part_Time_Nerd
Part_Time_Nerd

Reputation: 1014

Cannot get CollectionViewCells to work in SWIFT

I have tried this numerous ways but I am unable to get it to work. I am trying to add a simple image and two text labels to a collection view cell and when the build completes the tableview is just blank. I am brand new too SWIFT but I am pretty sure I am missing something simple. What am I doing wrong?

ViewController

import UIKit

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate{
    let locationName = ["Hawaii Resort", "Mountain Expedition", "Scuba Diving"]
    let locationImage = [UIImage(named: "img0"), UIImage(named: "img1"), UIImage(named: "img2")]
    let locationDescription = ["Lorem Ipsum 0", "Lorem Ipsum 1", "Lorem Ipsum 2"]

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return locationName.count
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CollectionViewCell

        cell.locationName.text = locationName[indexPath.row]
        cell.locationImage.image = locationImage[indexPath.row]
        cell.locationDescription.text = locationDescription[indexPath.row]

        return cell
    }

}

CollectionViewCell

import UIKit

class CollectionViewCell: UICollectionViewCell {

    @IBOutlet weak var locationImage: UIImageView!
    @IBOutlet weak var locationName: UILabel!
    @IBOutlet weak var locationDescription: UILabel!
}

enter image description here

Upvotes: 0

Views: 97

Answers (1)

nicksarno
nicksarno

Reputation: 4245

You need to connect the collectionView to the ViewController. Beneath locationDescription add:

@IBOutlet weak var collectionView: UICollectionView!

Then connect it on the storyboard. Then within the viewDidLoad,set the delegate and data source to self

self.collectionView.delegate = self
self.collectionView.datasource = self

Upvotes: 1

Related Questions