在Swift 4中传递数据后出现空白标签?

时间:2018-11-21 21:45:42

标签: swift

我当前正在尝试将数据从表格视图控制器传递到第二个视图控制器,但是我的标签和图像在第二个视图控制器中显示为空白。

这是我的主要事件视图控制器:

class EventsTableViewController: PFQueryTableViewController {


    override func queryForTable() -> PFQuery<PFObject> {
        let query = PFQuery(className: "Events")
        //query.order(byAscending: "location")
        query.order(byAscending: "date")
        return query
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        self.title = "Upcoming Events"
        // Do any additional setup after loading the view.
    }

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

    func prepare(for segue: UIStoryboardSegue, sender: Any?) {

            if segue.identifier == "MasterToDetail" {
                let detailVC = segue.destination as!  DetailViewController
               detailVC.myEventCell = sender as? EventCell 
            }
        }
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath, object: PFObject?) -> PFTableViewCell? {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! EventCell

        cell.dateLabel.text = object?.object(forKey: "date") as? String
        cell.locationLabel.text = object?.object(forKey: "location") as? String
        cell.nameLabel.text = object?.object(forKey: "name") as? String

        let imageFile = object?.object(forKey: "image") as? PFFile

        cell.eventImage.image = UIImage(named: "download")

        cell.eventImage.file = imageFile
        cell.eventImage.loadInBackground()

        return cell
    }

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        performSegue(withIdentifier: "MasterToDetail", sender: EventCell())

    }

    @IBAction func reloadTable(_ sender: Any) {

        self.loadObjects()
    }

            @IBAction func onSignOutTapped(_ sender: Any) {
        let firebaseAuth = Auth.auth()
        do {
            try firebaseAuth.signOut()
            performSegue(withIdentifier: "signOutSegue", sender: nil)
            } catch {
            print (error)
        }

    }

}

和我的第二个视图控制器:

class DetailViewController: UIViewController {


    @IBOutlet weak var detailImageView: UIImageView!
    @IBOutlet weak var detailNameLabel: UILabel!
    @IBOutlet weak var detailDescriptionLabel: UILabel!
    @IBOutlet weak var detailLocationLabel: UILabel!

    var myEventCell: EventCell?

    override func viewDidLoad() {
        super.viewDidLoad()

        setUI()
    }
    func  setUI () {
        detailNameLabel.text = myEventCell?.nameLabel.text
        detailImageView.image = myEventCell?.eventImage.image
        detailLocationLabel.text = myEventCell?.locationLabel.text
    }

}

1 个答案:

答案 0 :(得分:0)

当您在此处发送空单元格

performSegue(withIdentifier: "MasterToDetail", sender: EventCell())

您需要

let cell = tableView.cellForRow(at:indexPath)
performSegue(withIdentifier: "MasterToDetail", sender:cell)