数据未在控制器之间传递

时间:2019-09-24 13:46:30

标签: ios swift iphone

我目前正在上大学,要用Swift编写自动售货机。它由初始视图组成,该视图是具有所有可用饮料的TableView。选择/轻按一种饮料后,应执行搜索以显示DrinkDetailView,该视图为纯视图,应显示饮料的名称和价格。考虑到这一点,这意味着为此,必须在我拥有的控制器(附加代码)之间传递数据。这有效-但偏移量为1。 含义:当我在TableView中选择一种饮料时,比如说咖啡,它触发了Drink Detail视图,但是名称和价格的标签为空。关闭此菜单并在TableView中选择另一种饮料后,我们假设可口可乐再次显示了详细信息,现在标签不再是空的,而是说“咖啡”,这就是价格。如果我知道关闭此菜单并选择另一种饮料,那么接下来我将提供可口可乐的详细信息。显然,某处存在偏移,因为可能数据未正确传递?

我在上一个项目中遇到了这个问题,并以某种方式解决了这个问题,但是不幸的是我不记得是怎么回事。我只能说我从以前的作业中获得了正确的,已经修复且可以正常工作的代码。所以我真的不知道这里发生了什么,为什么。

TableViewController

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        selectedDrink = tableData[indexPath.row]
        performSegue(withIdentifier: "fromTableToDrinkDetail", sender: selectedDrink)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.destination is DrinkDetailViewController
        {
            let destinationVC = segue.destination as? DrinkDetailViewController
            destinationVC?.drinkDet = selectedDrink

        }
    } 

DrinkDetailViewController

    var drinkDet: Drink!

    @IBOutlet weak var drinkName: UILabel!
    @IBOutlet weak var drinkPrice: UILabel!

    override func viewDidLoad() {
            super.viewDidLoad()

        if drinkDet != nil {

        drinkName.text = self.drinkDet.name
        drinkPrice.text = String(format: "%.2f", self.drinkDet.price) + " €"

        }

0 个答案:

没有答案