В настоящее время я учусь в университете, чтобы написать торговый автомат по продаже напитков в Свифте.Он состоит из начального представления, которое представляет собой TableView со всеми доступными напитками.Когда один напиток выбран / постукивается, он должен выполнить переход, чтобы показать DrinkDetailView, который представляет собой простой вид, который должен отображать название напитка и цену.Учитывая это, это означает, что для этого данные должны передаваться между имеющимися у меня контроллерами (код прилагается).Это работает, но имеет смещение 1. Значение: когда я выбираю один из напитков в TableView, скажем, кофе, он запускает представление сведений о напитке, но метки для имени и цены пусты.После закрытия этого и выбора другого напитка в TableView, давайте предположим, что Coca-Cola, детали показаны снова, теперь этикетки больше не пусты, но говорят «кофе» и его цена.Если бы я знал, закрыл это и выбрал другой напиток, у меня были бы детали для Coca-Cola далее.Так что, очевидно, где-то есть смещение, потому что, возможно, данные не передаются правильно?
У меня была эта проблема в предыдущем проекте, и я как-то ее исправил, но, к сожалению, я не помню как.Я могу просто сказать, что я взял правильно, уже исправленный и рабочий код из моей предыдущей домашней работы.Так что я действительно не знаю, что здесь происходит и почему.
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) + " €"
}