将数据移动到另一个视图控制器,但第二个视图控制器在第一个视图控制器之前加载
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 从一个视图控制器传递到另一个视图控制器