跨类传递对象时未正确设置

问题描述 投票:0回答:1

我无法快速推送新的ViewController。

class CartViewController: UITableViewController  {

    static var items:[Item] = []

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return CartViewController.items.count
    }

    //if cell is selected
    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let vc = storyboard?.instantiateViewController(withIdentifier: "PaymentController") as! PaymentController
        print(CartViewController.items[indexPath.row].title)
        vc.item? = CartViewController.items[indexPath.row]

        self.navigationController?.pushViewController(vc, animated: true)
    }

那里的打印功能给出了正确的结果,但是当按下新的vc时没有任何显示。调试器显示vc.item是零。

这是我在PaymentController类中拥有的

class PaymentController: UIViewController {

    @IBOutlet weak var myImage: UIImageView?
    @IBOutlet weak var myTitle: UILabel?
    @IBOutlet weak var myPrice: UILabel?

    var item:Item?

    override func viewDidLoad() {
        super.viewDidLoad()

        myImage?.image = UIImage(named: item!.image)
        myTitle?.text = item!.title
        myPrice?.text = String(item!.price)
    }
}

任何提示或想法将不胜感激:))

swift
1个回答
1
投票

tableView(_,didSelectRowAt:)中,尝试删除第3行中的?。也就是说,将vc.item? = (...)替换为vc.item = (...)

© www.soinside.com 2019 - 2024. All rights reserved.