Почему-то теряется значение при попытке передать его из ViewController в TableViewController. Схема вроде простая, значение берется из первого TVC (типа склад) и передается в VC (details), а оттуда в корзину заказа - второй TVC. И при попытке передать в корзину выдает nil, причем именно после сигвея, до него все нормально.
Что здесь не так?
Модель
struct Bouquet { var name: String }
Первый TVC
import UIKit
class BouquetsTableViewController: UITableViewController {
var bouquets = [Bouquet]() var bouquet: Bouquet? override func viewDidLoad() { super.viewDidLoad() bouquets = [ Bouquet(name: "Flower 1"), Bouquet(name: "Flower 2"), Bouquet(name: "Flower 3"), Bouquet(name: "Flower 4"), Bouquet(name: "Flower 5"), Bouquet(name: "Flower 6") } // MARK: - Table view data source override func numberOfSections(in tableView: UITableView) -> Int { return 1 } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return bouquets.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "bouquetsCell", for: indexPath) cell.textLabel?.text = bouquets[indexPath.row].name return cell } // MARK: - Navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { guard segue.identifier == "GoToDetails" else { return } let indexPath = tableView.indexPathForSelectedRow bouquet = bouquets[(indexPath?.row)!] let detailsVeiwController = segue.destination as! DetailsViewController detailsVeiwController.bouquet = bouquet } @IBAction func unwindToBouquets(_ unwindSegue: UIStoryboardSegue) { }
}
VC
import UIKit
class DetailsViewController: UIViewController {var bouquet: Bouquet? var itemToCart = "" @IBOutlet weak var nameLabel: UILabel!> @IBAction func addToCartButton(_ sender: UIButton) { } @IBAction func viewCartButton(_ sender: UIButton) { } override func viewDidLoad() { super.viewDidLoad() nameLabel.text = bouquet?.name itemToCart = nameLabel.text! } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { guard segue.identifier == "addToCart" else { return } let cartTableViewController = segue.destination as! CartTableViewController cartTableViewController.cartItem?.name = itemToCart }
}
Второй TVC
import UIKit
class CartTableViewController: UITableViewController {
var cartItems = [Bouquet]() var cartItem: Bouquet? override func viewDidLoad() { super.viewDidLoad() //print(cartItem) cartItems.append(cartItem!) } // MARK: - Table view data source override func numberOfSections(in tableView: UITableView) -> Int { return 1 } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return cartItems.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "CartCell", for: indexPath) cell.textLabel?.text = cartItems[indexPath.row].name return cell }
}