【问题标题】: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的新手

【问题讨论】:

  • 无法理解您的问题!你到底想要什么?

标签: ios 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
    }
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多