将数据从一个 ViewController 传递到下一个时遇到问题

Posted

技术标签:

【中文标题】将数据从一个 ViewController 传递到下一个时遇到问题【英文标题】:Having trouble with passing data from one ViewController to the next 【发布时间】:2020-12-19 20:37:28 【问题描述】:

几个月以来,我学得很快,但我一直在搞砸的一件事是在 ViewController 之间传递数据。当我从 prepareForSegue 方法中 PO 前瞻变量的路径时,该值是完整的。但是当新的 ViewController 实际出现并且我检查了它的值时,那时它是 nil 。如果有人能指出我正确的方向,我将不胜感激。

class LoginViewController: UIViewController 

var user_ID:String = ""

//this below is within another method activated by button
  Auth.auth().signIn(withEmail: email, password: password)  (result, error) in
        if error != nil 
            print ("there was an error signing in")
            print (error!.localizedDescription)
            return
        
        else 
            //go to home screen
            let userUID = result?.user.uid
            print (userUID)
            self.user_ID = userUID
            
            self.performSegue(withIdentifier: "MainSegue", sender: self)
        
    

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    
    //this is the destination VC
    let viewController = segue.destination as! ViewController
        
    viewController.user_ID = self.user_ID
    
    //NOTE: if I break here and PO viewConroller.user_ID the value is intact

    let homeViewController = (self.storyboard?.instantiateViewController(withIdentifier: "MainVC"))! as! ViewController
             
                //let mainViewController = ViewController()
                //mainViewController.user_ID = userUID
                                  
    self.present(homeViewController, animated: true, completion: nil)
   









class ViewController: UIViewController 

var persons = [Person]()
let db = Firestore.firestore()

 var user_ID:String = ""

 //NOTE: WHEN `viewdidload` runs value of user_ID is nil

【问题讨论】:

self.user_ID ,你在哪里初始化了 user_ID ? 我已经在每个 LoginViewController(发起 VC)和 ViewController 类(目标)中声明:var user_ID:String = "" 不要创建和呈现第二个视图控制器。让 segue 把那个放在destination 中。您在一个实例中设置数据,然后呈现另一个实例。 谢谢菲利普!!!你是完全正确的,这就像一个魅力。 :)。你真是个天才!!! 【参考方案1】:

上述 cmets 中的 Phillip 提供了解决方案。目前的 ViewController 是问题所在。 segue 已经这样做了。谢谢!!!

【讨论】:

以上是关于将数据从一个 ViewController 传递到下一个时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 使用 xib 中的 tabBarController 将数据从一个 viewController 传递到另一个 viewController

将数据从 ViewController 传递到 NSObject

将数据从 ViewController 传递到 TabViewController

将数据从一个 ViewController 传递到下一个时遇到问题

将数组数据从 CollectionView 传递到下一个 ViewController

教程/示例:如何将数据从 ViewController 传递到另一个 XCODE [关闭]