使用在另一个 Swift VC 文件中创建的对象?
Posted
技术标签:
【中文标题】使用在另一个 Swift VC 文件中创建的对象?【英文标题】:Use an object created in another Swift VC file? 【发布时间】:2015-07-15 19:14:50 【问题描述】:我正在创建一个应用并使用 Firebase 进行后端和用户身份验证。我在登录屏幕的视图控制器中完成了登录过程。这样做之后,在该 VC 中创建 authData 对象,并且 authData 对象包含一个 UID(用户 ID)字段。我想在另一个 VC 中引用同一对象的 uid 字段,在其中我通过附加在 FirebaseFramework.m 文件中创建的 myRootRef 变量来更改根数据库 url。本质上,我希望能够在另一个 VC 中使用和引用在一个 VC 中创建的对象。我该怎么做?
在登录VC中:
@IBAction func LoginTapped(sender: UIButton)
var email:NSString = txtEmail.text as NSString
var password:NSString = txtPassword.text as NSString
if ( email.isEqualToString("") || password.isEqualToString("") )
var alertView:UIAlertView = UIAlertView()
alertView.title = "Sign in Failed!"
alertView.message = "Please enter Email and Password"
alertView.delegate = self
alertView.addButtonWithTitle("OK")
alertView.show()
else
myRootRef.authUser(email as String, password: password as String)
error, authData in
if error != nil
var alertView:UIAlertView = UIAlertView()
alertView.title = "Sign in Failed!"
alertView.message = "Incorrect email or password"
alertView.delegate = self
alertView.addButtonWithTitle("OK")
alertView.show()
else
println(authData.uid)
在其他 VC 中:
@IBAction func SubmitTapped(sender: AnyObject)
var UserRef = myRootRef.childByAppendingPath(authData.uid)
UserRef.setValue(item)
在另一个 VC 中,无法识别“authData.uid”,尽管它是在登录 VC 中创建的。
【问题讨论】:
Accessing variables from another ViewController in Swift的可能重复 【参考方案1】:您需要使用segue
。您可以在情节提要中连接一个 segue,给它一个标识符,然后从代码中触发它。
Ray Wenderlich.com 有一篇很棒的文章。
您可以从代码中调用performSegueWithIdentifier
方法。这将触发一个转场。从那里您可以在prepareForSegue
控制器方法中“拦截”segue。在此方法中,您可以填充目标视图控制器的属性。
当用户通过 Firebase 应用的身份验证时,authData
属性包含当前用户。使用该属性,您可以填充下一个视图控制器。
let ref = Firebase(url: "<my-firebase-app>")
@IBAction func loginDidTouch(sender: AnyObject?)
ref.authUser("email", "password") (error, authData) in
self.performSegueWithIdentifier("MyIdentifier", sender: nil)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
if segue.identifier == "MyIdentifier"
let vc = segue.destinationViewController as! MyNextViewController
vc.authData = ref.authData
【讨论】:
以上是关于使用在另一个 Swift VC 文件中创建的对象?的主要内容,如果未能解决你的问题,请参考以下文章
C#winform中为啥一个窗体的对象可以调用在另一个窗体中创建的一个类未实例化下
如何在dojo工具包的Current JS文件中使用在另一个JS文件中创建的Dialog变量