Xcode 在视图控制器之间传递变量时出现问题

Xcode 在视图控制器之间传递变量时出现问题,xcode,swift,xcode6,Xcode,Swift,Xcode6,我知道这是非常基本的,但是我第一次在视图控制器之间传递变量,我遇到了一些问题 我只是尝试从一个视图控制器的文本字段中获取用户名,并将其显示在另一个视图控制器的标签中。在第一个视图控制器上,我得到: import UIKit var userName = "" class FirstViewController: UIViewController, UIPickerViewDelegate { @IBAction func enterUserDetails(sender : AnyObjec

我知道这是非常基本的,但是我第一次在视图控制器之间传递变量,我遇到了一些问题

我只是尝试从一个视图控制器的文本字段中获取用户名,并将其显示在另一个视图控制器的标签中。在第一个视图控制器上,我得到:

import UIKit

var userName = ""

class FirstViewController: UIViewController, UIPickerViewDelegate {

@IBAction func enterUserDetails(sender : AnyObject) {
    userNameInput.text = userName
}

}
在另一个视图控制器上,我有:

override func viewDidLoad() {
    super.viewDidLoad()

userWelcomeMessage.text = "Good \(currentTimeOfDay), \(userName)!"

}
代码运行,但我没有从userName变量中获得输出

任何帮助都将不胜感激。

将其更改为

class SecondViewController: UIViewController { 
    ...
    var givenUserName:String!
}  

class FirstViewController: UIViewController, UIPickerViewDelegate {
    var userName = ""

   @IBAction func enterUserDetails(sender : AnyObject) {
        userName = userNameInput.text 
   }

   override func prepareForSegue(...) {
       if (this is your segue) {
           (new view controller).givenUserName = userName
       }
   } 
}

或者,如果不使用segues,您可以在某个地方手动实例化
SecondViewController
,并在那里分配其
givenUserName
。但是请不要使用全局变量来澄清,viewDidLoad是在其他一些视图控制器中实现的,而不是在FirstViewController中实现的,对吗?如何在
viewDidLoad
的范围内定义
userName
?您必须在第二个视图控制器的某个位置分配
用户名
。在用VisualBasic6进行了少量编程之后,Swift是我的第一门语言,因此我仍在学习基础知识。我会做更多的研究,然后在我更好地理解你的建议后尝试实施。没问题,我还不知道任何Swift书籍,但是:如果你在Xcode中选择使用Swift的Master Detail app,请查看出现的模板代码。