将数据从一个 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 传递到下一个时遇到问题