title: How to get data from popup view controller to custom table view cell?
body: <p><a href="https://i.stack.imgur.com/xXee7.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/xXee7.jpg" alt="enter image description here"></a></p>
  
  <p>I have 3 view controllers. First is <code>MainViewController</code>. </p>
  
  <p>In this <code>MainViewController</code> has custom table view cell as <code>FoodCell</code> class with two property as <code>name</code> and <code>price</code>. </p>
  
  <p>I instantiate this objects in <code>MainViewController</code> and when tap to table view cell this objects pass to popup <code>DetailViewController</code> which is not table view it is only <code>View</code> with labels(foodName and foodPrice labels) and <code>AddToBasket</code> button. </p>
  
  <p>And finally I want to pass this class objects from popup <code>DetailViewController</code> to <code>MyCartViewController</code>. <code>MyCartViewController</code> is my final scene for show the <code>foodNames</code> and <code>foodPrices</code> objects. </p>
  
  <p>(e.g. <code>MainViewController</code> is my food menu list. <code>DetailViewController</code> is my selected foods list.<code>MyCartViewController</code> is my market bag. )</p>
  
  <p><strong>MainViewController(Food Menu List)</strong></p>
  
  <pre><code>import UIKit
  
  class MainViewController: UIViewController, UITableViewDataSource, UITableViewDelegate,
  UICollectionViewDelegate, UICollectionViewDataSource,   UICollectionViewDelegateFlowLayout {
  
  @IBOutlet weak var searchBar: UISearchBar!
  @IBOutlet weak var mainTableView: UITableView!
  
  var imageNames = [ImageNames]()
  var searchFoods: [String]!
  var priceFood: [Double]!
  var searching = false
  
  
  override func viewWillAppear(_ animated: Bool) {
      super.viewWillAppear(animated)
      self.tabBarController?.tabBar.isHidden = false
  }
  
  override func viewDidLoad() {
      super.viewDidLoad()
  
      self.navigationController?.navigationBar.isHidden = true
      let foodCell = Food(name: ["Hamburger big mac",
                                 "Patates",
                                 "Whopper",
                                 "Steakhouse"], price: [15.0, 20.0, 25.0, 30.0])
  
      searchBar.delegate = self
      searchFoods = foodCell.name
      priceFood = foodCell.price
  
      imageNames = [
          ImageNames(name: "images"),
          ImageNames(name: "unnamed"),
          ImageNames(name: "unnamed")
      ]
  
  }
  
  func numberOfSections(in tableView: UITableView) -&gt; Int {
      return 2
  }
  
  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
  
      return section == 0 ? 1 : searchFoods.count
  }
  
  func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -&gt; CGFloat {
      return indexPath.section == 0 ? 130 : 65
  }
  
  func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -&gt; CGFloat {
      return indexPath.section == 0 ? 100 : 65
  }
  
  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -&gt; UITableViewCell {
      if indexPath.section == 0 {
          let cell = tableView.dequeueReusableCell(withIdentifier: "MainFoodTableViewCell", for: indexPath) as! MainFoodTableViewCell
  
          cell.mainFoodCollectionView.delegate = self
          cell.mainFoodCollectionView.dataSource = self
          cell.mainFoodCollectionView.reloadData()
          cell.mainFoodCollectionView.tag = indexPath.row
          return cell
  
      } else {
  
          let cell = tableView.dequeueReusableCell(withIdentifier: "CellForFood", for: indexPath) as! MainFoodTitleTableViewCell
  
          cell.titleLabel?.text = searchFoods[indexPath.row]
          cell.priceLabel?.text = priceFood[indexPath.row].description
  
          return cell
      }
  
  }
  
  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
      if segue.identifier == "cellForFoodSegue" {
          if let destinationViewController = segue.destination as? DetailViewController
          {
              let indexPath = self.mainTableView.indexPathForSelectedRow!
  
              var foodNameArray: [String]
              var foodPriceArray: [Double]
  
              foodNameArray = [searchFoods[indexPath.row]]
              foodPriceArray = [priceFood[indexPath.row]]
  
              destinationViewController.detailFoodName = foodNameArray
              destinationViewController.detailFoodPrice = foodPriceArray
  
          }
  
      }
  }
  
  func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -&gt; Int {
      return  imageNames.count
  }
  
  //MARK:- collection view cell size
  func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -&gt; CGSize {
      let width = UIScreen.main.bounds.width
      return CGSize(width: width, height: 130)
  }
  
  //MARK:- //collection view cell data
  func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -&gt; UICollectionViewCell {
      let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MainFoodCollectionViewCell", for: indexPath) as! MainFoodCollectionViewCell
      let img = imageNames[indexPath.row]
      cell.mainFoodImage.image = UIImage(named: img.name)
      return cell
  }
  }
  </code></pre>
  
  <p><strong>DetailViewController(Selected Foods List)</strong></p>
  
  <pre><code>import UIKit
  
  class DetailViewController: UIViewController {
  
  @IBOutlet weak var foodTitle: UILabel!
  @IBOutlet weak var foodSubTitle: UILabel!
  @IBOutlet weak var foodPiece: UILabel!
  @IBOutlet weak var foodPrice: UILabel!
  @IBOutlet weak var drinkPicker: UITextField!
  @IBOutlet weak var menuPieceStepper: UIStepper!
  
  var drinkPickerView = UIPickerView()
  
  var selectDrinkType: [String] = []
  var detailFoodName : [String] = []
  var detailFoodPrice : [Double] = [0.0]
  
  
  
  let foods = Food(name: ["Hamburger big mac",
                             "Patates",
                             "Whopper",
                             "Steakhouse"], price: [15.0, 20.0, 25.0, 30.0])
  
  
  @IBAction func foodPieceStepper(_ sender: Any) {
  }
  
  @objc func foodPieceChangeStepper() {
      let res = menuPieceStepper.value + foods.price.first!
      foodPrice.text = "\(res)"
  }
  
  //TODO:- Add to basket
      @IBAction func addBasket(_ sender: Any) {
  
          let destinationVC = MyCartViewController()
  
          destinationVC.fromDetailFoodNames = foods.name
          destinationVC.fromDetailFoodPrices = foods.price
     }
  
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
     if(segue.identifier == "addToCartSegue") {
          if let addToCartVC = segue.destination as? MyCartViewController  {   
              addToCartVC.fromDetailFoodNames = [foodTitle.text]
              addToCartVC.fromDetailFoodPrices = foods.price
      }
     }
  }
  
  override func viewDidLoad() {
      super.viewDidLoad()
  
      menuPieceStepper.value = 0.0
      menuPieceStepper.minimumValue = 0.0
      menuPieceStepper.maximumValue = 30.0
      menuPieceStepper.stepValue = foods.price.first!
      menuPieceStepper.addTarget(self, action: #selector(foodPieceChangeStepper), for: .valueChanged)
  
      drinkPickerView.delegate = self
      drinkPicker.inputView = drinkPickerView
      selectDrinkType = ["Ayran", "Kola", "Su", "Fanta", "Şalgam", "Sprite"]
  
      foodTitle.text = detailFoodName.description
      foodPrice.text = detailFoodPrice.description
  
  
      self.navigationController?.navigationItem.title = "Sipariş Detayı"
      let tapGesture = UITapGestureRecognizer(target: self, action:     #selector(self.dismissKeyboard (_:)))
      self.view.addGestureRecognizer(tapGesture)
  }
  @objc func dismissKeyboard (_ sender: UITapGestureRecognizer) {
     drinkPicker.resignFirstResponder()
  }
  
  override func viewWillAppear(_ animated: Bool) {
      self.navigationController?.navigationBar.isHidden = false
  
  }
  
  override func viewWillDisappear(_ animated: Bool) {
      self.navigationController?.navigationBar.isHidden = true
  }
  }
  
  extension DetailViewController: UIPickerViewDelegate,    UIPickerViewDataSource {
  func numberOfComponents(in pickerView: UIPickerView) -&gt; Int {
      return 1
  }
  
  func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -&gt; Int {
      return selectDrinkType.count
  }
  
  func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -&gt; String? {
      return selectDrinkType[row]
  }
  
  func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
      let selectedDrink = selectDrinkType[row]
      drinkPicker.text = selectedDrink
  }
  
  }
  </code></pre>
  
  <p><strong>MyCartViewController(My Grocery Bag)</strong></p>
  
  <pre><code>import UIKit
  
  class MyCartViewController: UIViewController, UITableViewDataSource,   UITableViewDelegate {
  
  var fromDetailFoodNames: [String?] = []
  var fromDetailFoodPrices: [Double?] = []
  
  @IBOutlet weak var myCartTableView: UITableView!
  @IBOutlet weak var totalPriceLabel: UILabel!
  
  
  let foodNames = [
      "Hamburger big mac",
      "Cemal",
      "Emre",
      "Memo"
  ]
  
  //TODO-: Delete my cart
  @IBAction func deleteMyCart(_ sender: Any) {
  }
  
  //TODO: - Approve my  cart
  @IBAction func approveCart(_ sender: Any) {
  }
  
  
  override func viewDidLoad() {
      super.viewDidLoad()
  }
  
  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
  
      return section == 0 ? 1 : foodNames.count
  }
  
  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -&gt; UITableViewCell {
  
       let cell = tableView.dequeueReusableCell(withIdentifier: "myCartCell", for: indexPath) as! MyCartTableViewCell
  
      if indexPath.section == 1 &amp;&amp; indexPath.last! &lt;= fromDetailFoodPrices.indices.last! {
  
      let name = fromDetailFoodNames[indexPath.row]?.description ?? ""
      let price = fromDetailFoodPrices[indexPath.row]
      cell.myCartFoodNameLabel?.text = name
      cell.myCartFoodPriceLabel?.text = "\(String(describing: price))₺"
  
  }
      return cell    
  }
  }
  </code></pre>