将数据移动到另一个视图控制器,但第二个视图控制器在第一个视图控制器之前加载

Posted

技术标签:

【中文标题】将数据移动到另一个视图控制器,但第二个视图控制器在第一个视图控制器之前加载【英文标题】:move data to another view controller, but the 2nd view controller load first before 1st view controller 【发布时间】:2016-05-30 09:10:22 【问题描述】:

我想在用户登录登录视图控制器时,将电子邮件保存并显示到滑出菜单视图控制器,但在构建和运行时首先显示滑出菜单。因此该变量不包含任何内容,因为用户尚未在登录视图控制器中登录。

我用它来声明文本字段中的文本是电子邮件填充

let emailFill:String = self.emailTextfield.text!

并使用

self.labelContainEmail = emailFill

labelContainEmail 是顶部的全局变量

var labelContainEmail: String = ""

我正在使用这样的为 segue 准备来移动数据

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)

    if segue.identifier == "yolo"
    
        let vc = segue.destinationViewController as! SlideOutMenu
        vc.labelContainEmail2 = labelContainEmail
        print(vc.labelContainEmail2) // this don't print anything, but when i print under `self.labelContainEmail = emailFill` it printed out the email
    

在 slideOutMenu.swift 中,我在顶部有这个变量

var labelContainEmail2: String = ""

并尝试使用

更改标签文本
labelEmail.text = labelContainEmail2

在视图中加载

我该怎么办?请放轻松,我是swift的新手

【问题讨论】:

无法理解您的问题!你到底想要什么? 【参考方案1】:

在 NSUserDefaults 中使用为 segue 存储电子邮件做准备

NSUserDefaults.standardUserDefaults().setObject(labelContainEmail , forKey: "email")  // save user email

在 slideOutMenu.swift 中并尝试在视图中更改标签文本并加载

if (NSUserDefaults.standardUserDefaults().objectForKey("email")) == nil
 
    NSUserDefaults.standardUserDefaults().setObject("" , forKey: "email")

else
   
   let emailStr = NSUserDefaults.standardUserDefaults().objectForKey("email") as! String

【讨论】:

谢谢伙计!你太棒了!【参考方案2】:

你可以在顶部使用这一行

** 第二次查看

class SlideOutMenu: UIViewController 

  var labelContainEmail: String?

    //your code here 

从第一个视图到第二个视图的去向。

**使用第一个视图

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)

    if segue.identifier == "yolo"
    
        let vc = segue.destinationViewController as! SlideOutMenu
        vc.labelContainEmail2 = labelContainEmail
        print(vc.labelContainEmail2) // this don't print anything, but when i print under `self.labelContainEmail = emailFill` it printed out the email
    

我希望它对您有所帮助,否则您可以使用模型类也更好地传递数据。

【讨论】:

以上是关于将数据移动到另一个视图控制器,但第二个视图控制器在第一个视图控制器之前加载的主要内容,如果未能解决你的问题,请参考以下文章

将 ImageData 从一个视图控制器传递到另一个视图控制器

将视图控制器从一个故事板移动或复制到另一个故事板

如何将数据从一个视图控制器发送到另一个视图控制器[重复]

向前传递后如何将数据向后传递给视图控制器?

如何使用 extern NSString 将字符串值从第一个视图移动到第二个视图控制器

将视图从一个控制器传递到另一个控制器 iOS