I have a UICollectionView that I am populating based on Firebase data. I have created custom cells that populate the UICollectionView:
import UIKit
import Ma
Instead of calling cellForItem, which gives you a new cell, you should use the cell that is passed to you as sender.
if let cell = sender as? PollCell {
pollViewController.passLabel.text = cell.pollQuestion.text
}
The crash occurs because the outlet passLabel
is not connected yet when prepare(for segue
is called.
You have to declare a (temporary) variable in PollController
and set the label in viewDidLoad
class PollController: UIViewController {
@IBOutlet weak var passLabel: UILabel!
var pass = ""
override func viewDidLoad() {
super.viewDidLoad()
passLabel.text = pass
}
...
In prepare(for segue
set the variable rather than the text
property of the label:
let pollViewController = segue.destination as! PollController
if let cell = sender as? PollCell {
pollViewController.pass = cell.pollQuestion.text
}
}
Note: It's not recommended to gather information from the view (cell). Get the index path and read the information from the model (data source array).