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



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

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

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
       }
   } 
}

或者如果你不使用segue,有一些地方你可以手动实例化SecondViewController,你可以在那里分配它的givenUserName。但是请不要使用全局变量

最新更新