2017-02-11 77 views
0

我现在有一个图象,三个UILabels,并在细胞中一个TextView并希望使用该数据在一个单独的视图控制器。视图控制器目前通过push segue连接到单元,我应该怎么做才能实现这一点?访问火力地堡数据

我有这个,但它不工作:

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? [String: AnyObject] { 
      self.userLabel.text = dictionary["username"] as? String 
     } 
    }) 

回答

0

实际上,我是能够找到一个方法来做到这一点。这是很简单的实际

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! [String: AnyObject] 
      let postDetails = post["postID"] as? String 
      let controller = segue.destination as! PostDetailsViewController 
      controller.postDetails = postDetails 
     } 
    } 
} 

PostDetailsViewController

var postDetails: String? 

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? [String: AnyObject] { 
      self.idLabel.text = dictionary["postID"] as? String 
     } 
    }) 
} 
0

型词典的存储变量添加到源和目的地VC的两个:VAR用户数据:字典!或者你可以初始化一个空的字典,让用户数据=字符串:任何

然后将转换为快照源VC用户数据设置为字典数据字典后执行SEGUE

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

,然后实现在VC在源VC SEGUE方法准备传递数据:

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

我要补充到DetailsViewController(单独的视图控制器)和MainViewController以下哪种? – gabe