在视图控制器之间传递变量的问

时间:2014-07-09 21:32:55

标签: xcode swift xcode6

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

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

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变量获得输出。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

将其更改为

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。但请没有全局变量