我知道这是非常基本的,但我是第一次在视图控制器之间传递变量,我有问题。
我只是想从一个视图控制器上的文本字段中获取用户名,并在另一个视图控制器上的标签中显示它。在第一个视图控制器上我有:
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
。但是请不要使用全局变量