title: How pass the value of a selected cell to another ViewController?
body: <p>Essentially, I have the following <code>UITableViewController</code> that contains custom tableView cells with labels in them. When the cell is selected I would like the value of the cell to be passed to the next view controller where I am using it in an HTTP POST response.</p>
  
  <p>What can be added to <code>didSelectRowAt</code> to pass the value of the selected cell to the view controller presented?</p>
  
  <p>Perhaps as a variable?</p>
  
  <p>The following is my code:</p>
  
  <pre><code>import UIKit
  
  class ScheduledCell: UITableViewCell {
  
      @IBOutlet weak var ETALabel: UILabel!
      @IBOutlet weak var cellStructure: UIView!
  
      @IBOutlet weak var scheduledLabel: UILabel!
      @IBOutlet weak var testingCell: UILabel!
      @IBOutlet weak var pickupLabel: UILabel!
      @IBOutlet weak var deliveryLabel: UILabel!
      @IBOutlet weak var stopLabel: UILabel!
      @IBOutlet weak var topBar: UIView!
  
  
  }
  
  class ToCustomerTableViewController: UITableViewController, UIGestureRecognizerDelegate {
  
      var typeValue = String()
  
      var driverName = UserDefaults.standard.string(forKey: "name")!
      var structure = [AlreadyScheduledStructure]()
  
  
      override func viewDidLoad() {
          super.viewDidLoad()
  
          fetchJSON()
  
  
          //Disable delay in button tap
          self.tableView.delaysContentTouches = false
  
          tableView.tableFooterView = UIView()
  
      }
  
  
      private func fetchJSON() {
          guard let url = URL(string: "https://example.com/example/example"),
              let value = driverName.addingPercentEncoding(withAllowedCharacters: .urlQueryValueAllowed)
              else { return }
  
          var request = URLRequest(url: url)
          request.httpMethod = "POST"
          request.httpBody = "driverName=\(value)".data(using: .utf8)
  
          URLSession.shared.dataTask(with: request) { data, _, error in
              guard let data = data else { return }
  
  
              do {
                  self.structure = try JSONDecoder().decode([AlreadyScheduledStructure].self,from:data)
                  DispatchQueue.main.async {
                      self.tableView.reloadData()
                  }
              }
              catch {
                  print(error)
              }
  
              }.resume()
  
      }
  
  
  
      override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
  
          return structure.count
      }
  
      override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -&gt; UITableViewCell {
  
          let cell = tableView.dequeueReusableCell(withIdentifier: "scheduledID", for: indexPath) as! ScheduledCell
          let portfolio = structure[indexPath.row]
          cell.stopLabel.text = "Stop \(portfolio.stop_sequence)"
          cell.testingCell.text = portfolio.customer
          return cell
  
      }
  
      override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  
  
          let portfolio = structure[indexPath.row]
          let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "scheduledDelivery")
  
          print(portfolio.customer)
          controller.navigationItem.title = navTitle
          navigationController?.pushViewController(controller, animated: true)
      }
  
  
      override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -&gt; CGFloat {
          return 200.0
      }
  
  }
  </code></pre>