Accès aux données Firebase à partir de la cellule dans le controller de vue

J'ai actuellement une image, trois UILabels, et un TextView dans une cellule et voudrais utiliser ces données dans un controller de vue séparé. Le controller de vue est actuellement connecté via une séquence de démarrage à la cellule, que dois-je faire pour que cela se produise?

J'ai ceci mais ça ne marche pas:

let uid = FIRAuth.auth()?.currentUser?.uid FIRDatabase.database().reference().child("users").child(uid!).observeSingleEvent(of: .value, with: { (snapshot) in if let dictionary = snapshot.value as? [Ssortingng: AnyObject] { self.userLabel.text = dictionary["username"] as? Ssortingng } }) 

Ajoutez une variable stockée de type Dictionary aux VC de source et de destination: var userdata: Dictionary! ou vous pouvez initialiser un dictionary vide let userdata = Ssortingng: Any

Ensuite, après avoir converti l'instantané en dictionary, définissez datatables d'user VC source sur datatables du dictionary et exécutez le segment.

 if let dictionary = snapshot.value as? [Ssortingng: AnyObject] { self.userLabel.text = dictionary["username"] as? Ssortingng self.userdata = dictionary self.performSegue(withIdentifier: "<segueIDHere>", sender: self) } 

Et puis implémenter la VC préparer la méthode segue dans le VC source pour passer datatables:

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "<segueIDHere>" { let destinationVC = segue.destination as! <ClassNameofVCHere> destinationVC.userdata = self.userdata } } 

J'étais en mesure de find un moyen de le faire. C'est assez simple en fait

prepareForSegue

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "showDetails" { if let indexPath = self.postsTableView.indexPathForSelectedRow { let post = posts[indexPath.row] as! [Ssortingng: AnyObject] let postDetails = post["postID"] as? Ssortingng let controller = segue.destination as! PostDetailsViewController controller.postDetails = postDetails } } } 

PostDetailsViewController

 var postDetails: Ssortingng? override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. FIRDatabase.database().reference().child("posts").child(postDetails!).observeSingleEvent(of: .value, with: { (snapshot) in if let dictionary = snapshot.value as? [Ssortingng: AnyObject] { self.idLabel.text = dictionary["postID"] as? Ssortingng } }) }