我正在尝试熟悉swift,但我无法找到如何使用Swift在视图之间传递数据。
class ViewController: UIViewController {
@IBOutlet var field: UITextField
@IBOutlet var butt: UIButton
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if let vc = segue.destinationViewController as? secondViewController {
if(vc.lab != nil){
vc.lab.text=self.field.text
println(self.field.text)
}
}
和第二个视图控制器:
class secondViewController: UIViewController {
@IBOutlet var lab: UILabel
override func viewDidLoad() {
super.viewDidLoad()
}
我想要做的只是使用第一个视图的文本字段的文本更改第二个视图中的标签。 这样就不会给我任何错误,但我不会改变标签。
答案 0 :(得分:2)
对我来说,这看起来不像是一个Swift问题。它看起来像一个视图生命周期问题。在调用prepareForSegue:
时,secondViewController
尚未从故事板中加载IBOutlets
。更好的解决方案是在文件上设置某种类型的属性,例如
vc.myLabelString = self.field.text
然后在viewDidLoad
的{{1}}中将文字分配给您的标签。
仅供参考:您可以随时检查视图控制器是否已使用secondViewController