Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在swift中的视图之间传递数据_Ios_Swift - Fatal编程技术网

Ios 在swift中的视图之间传递数据

Ios 在swift中的视图之间传递数据,ios,swift,Ios,Swift,我试图熟悉swift,但我找不到如何使用swift在视图之间传递数据 class ViewController: UIViewController { @IBOutlet var field: UITextField @IBOutlet var butt: UIButton override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { if let vc = segue.destinati

我试图熟悉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()

}
我想做的只是用第一个视图的textfield的文本更改第二个视图中的标签。
这样做不会给我任何错误,但我不会更改标签。

对我来说,这看起来不是一个快速的问题。这看起来像是视图生命周期问题。调用
prepareforsgue:
时,
secondViewController
尚未从情节提要加载它的
IBOutlets
。更好的解决方案是在文件上设置某种类型的属性,如

vc.myLabelString = self.field.text
然后在
secondViewController
viewdiload
中将文本分配给标签


仅供参考:您可以随时检查视图控制器是否已使用
vc.isViewLoaded()

加载其视图这是我不喜欢情节提要的原因之一。它隐藏了实际发生的事情。在代码中执行所有操作时,很明显当时没有加载标签。@dasdom我同意您的说法,它有点模糊,但在我看来,首先处理另一个VC的视图并不是演示视图控制器的责任。理想情况下,VC 1会将一些模型对象传递给VC 2。加载后,VC 2将知道使用StatePark模型中包含的各种数据填充其所有视图,如名称、位置、图像、描述、土著动物等。我完全同意。还是不喜欢故事板。:)