我知道这是非常基本的,但我第一次在视图控制器之间传递变量,而我遇到了问题。
我只是尝试从一个视图控制器上的文本字段中获取用户名,并将其显示在另一个视图控制器上的标签中。在我的第一个视图控制器上:
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变量获得输出。
非常感谢任何帮助。
答案 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
。但请没有全局变量。