我希望当用户在登录视图控制器中登录时,保存的电子邮件显示并滑出菜单视图控制器,但在构建和运行时首先显示滑出菜单。因此该变量不包含任何内容,因为用户尚未在登录视图控制器中登录。
我使用它来声明文本字段中的文本是电子邮件填写
let emailFill:String = self.emailTextfield.text!
并使用
self.labelContainEmail = emailFill
labelContainEmail是顶部的全局变量
var labelContainEmail: String = ""
我正在使用像这样的准备来移动数据
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的新手
答案 0 :(得分: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
}
答案 1 :(得分:0)
您可以在此行的顶部使用
**第二视图
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
}
}
我希望它能帮助你,除了明智之外你还可以使用Model Class来传递数据。