EXC_BAD_INSTRUCTION When Passing UICollectionView Cell Data to Different ViewController

后端 未结 2 1118
粉色の甜心
粉色の甜心 2020-12-07 06:00

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         


        
相关标签:
2条回答
  • 2020-12-07 06:28

    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
    }
    
    0 讨论(0)
  • 2020-12-07 06:40

    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).

    0 讨论(0)
提交回复
热议问题