title: push to viewController while keeping access to information on previous viewController programmatically
body: <p>I was wondering if it is possible to push to a new viewController while keeping access to data on the VC that did the pushing. I am wondering if there is a way to complete this, or if I could somehow make that specific information globally available to another view?  </p>
  
  <p>for example, I have users name and image being retrieved from firebase on profileVC, and I want to press a button that will send it to another ViewController that will display that name and image as well.</p>
  
  <p>I will show below, how I call this information.  </p>
  
  <pre><code> class userProfileHeader: UICollectionViewCell {
  
  var user: User? {
  
  didSet {
  
      configureMessageAcceptButton()
      let name = user?.name
      nameLabel.text = name
  
      guard let profileImageUrl = user?.profileImageUrl else { return }
      profileImageView.loadImageUsingCacheWithUrlString(profileImageUrl)
  }
  }
  
  
  
  lazy var acceptButton: UIButton = {
       let button = UIButton(type: .system)
       button.setTitle("Loading", for: .normal)
       button.layer.cornerRadius = 3
       button.layer.borderColor = GREEN_Theme.cgColor
       button.layer.borderWidth = 0.5
       button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 14)
       button.setTitleColor(GREEN_Theme, for: .normal)
       button.addTarget(self, action: #selector(handleAcceptRequest), for: .touchUpInside)
       return button
   }()
  
  let profileImageView: UIImageView = {
      let image = UIImageView()
      image.image = UIImage(named: "users")
      image.translatesAutoresizingMaskIntoConstraints = false
      image.contentMode = .scaleAspectFill
      return image
  }()
  
  let nameLabel: UILabel = {
      let label = UILabel()
      label.text = "Jane John Doe"
      label.font = UIFont.systemFont(ofSize: 30)
      label.numberOfLines = 0
      label.textColor = UIColor.black
      return label
  }()
  
  
  override init(frame: CGRect) {
      super.init(frame: frame)
  
    addSubview(imageView)
      imageView.anchors(top: topAnchor, topPad: 0, bottom: bottomAnchor, bottomPad: 0, left:      leftAnchor, leftPad: 0, right: rightAnchor, rightPad: 0, height: 100, width: 200)
      setupProfileImageView()
      setupNameView()
  }
  
  func setupProfileImageView() {
      imageView.addSubview(self.profileImageView)
      self.profileImageView.anchors(top: nil, topPad: 0, bottom: nil, bottomPad: 0, left: imageView.leftAnchor, leftPad: 16, right: nil, rightPad: 0, height: 100, width: 100)
      self.profileImageView.translatesAutoresizingMaskIntoConstraints = false
      self.profileImageView.centerYAnchor.constraint(equalTo: self.imageView.centerYAnchor).isActive = true
      self.profileImageView.layer.zPosition = 10
      self.profileImageView.layer.cornerRadius = 50
      self.profileImageView.layer.masksToBounds = true
      self.profileImageView.contentMode = .scaleAspectFill
      self.profileImageView.image=#imageLiteral(resourceName: "user")
  }
  
   func setupNameView() {
  
  imageView.addSubview(self.nameLabel)
  self.nameLabel.anchors(top: profileImageView.bottomAnchor, topPad: 10, bottom: nil, bottomPad: 0, left: profileImageView.leftAnchor, leftPad: 0, right: nil, rightPad: 0, height: 30, width: 100)
  self.nameLabel.translatesAutoresizingMaskIntoConstraints = false
  self.nameLabel.layer.zPosition = 10
  self.nameLabel.centerXAnchor.constraint(equalTo: imageView.centerXAnchor).isActive = true
  
  
   }
  
  
  @objc func handleAcceptRequest() {
      let user = self.user
      let username = user?.name
  
      let alert = UIAlertController(title: "Are you Sure? ",message:" Would you like to accept \(username!) to complete your job?", preferredStyle: UIAlertController.Style.alert)
  
      let cancelButton = UIAlertAction(title: "Cancel", style: .default, handler: {(_ action: UIAlertAction) -&gt; Void in
             print("you pressed Yes, please button")
         })
  
      let continueButton = UIAlertAction(title: "Continue", style: .default, handler: {(_ action: UIAlertAction) -&gt; Void in
          self.saveUserData(didAccept: "yes")
          let acceptWorker = acceptWorkerViewController()
          let navController = UINavigationController(rootViewController: acceptWorker)
          self.window?.rootViewController?.present(navController, animated: true, completion: nil)
             print("you pressed Continue")
  
         })
  
  
  
  
      continueButton.setValue(GREEN_Theme, forKey: "titleTextColor")
      cancelButton.setValue(UIColor.red, forKey: "titleTextColor")
      alert.addAction(cancelButton)
      alert.addAction(continueButton)
      self.window?.rootViewController?.present(alert, animated: true, completion: nil)
  
    }
  
  
  
  fileprivate func configureMessageAcceptButton() {
  
      guard let currentUID = Auth.auth().currentUser?.uid else { return }
      guard let user = self.user else { return }
  
      if currentUID != user.uid {
  
          imageView.addSubview(self.acceptButton)
          imageView.addSubview(self.sendMessageButton)
                self.acceptButton.anchors(top: profileImageView.topAnchor, topPad: 0, bottom: nil, bottomPad: 0, left: nil, leftPad: 0, right: imageView.rightAnchor, rightPad: 16, height: 40, width: 120)
                self.sendMessageButton.anchors(top: acceptButton.bottomAnchor, topPad: 16, bottom: nil, bottomPad: 0, left: acceptButton.leftAnchor, leftPad: 0, right: nil, rightPad: 0, height: 40, width: 120)
          acceptButton.setTitle("Accept Request", for: .normal)
          sendMessageButton.setTitle("Send Message", for: .normal)
  
      } else {
              print("this is the currentUser profile")
      }
  }
  
  required init?(coder aDecoder: NSCoder) {
      fatalError("init(coder:) has not been implemented")
  }
  
  
  
   }
  </code></pre>
  
  <p>sorry for the intense amount of code, I just wanted to show all of the code that represents what I am saying. in func handleAcceptRequest(), that's how I am pushing to a new ViewController. Is it possible to keep the data that's inside this viewController when pushing? </p>