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,请查看出现的模板代码。