如何从Swift中的容器视图中获取属性值

时间:2017-03-27 17:04:03

标签: ios swift uicontainerview

我有1个UIViewController,它包含一个UIContainerView和一个UIButton。 另外,我有一个UITableViewController(它有一个UITextField和一个UITextView),它嵌入在UIViewController的UIContainerView中。

我试图获取TextField和TextView中可用的字符串值。

enter image description here

我尝试使用segue获取属性值,但我没有这样做,请参阅下面的代码。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "TVCSegue" {
        let containerTVC = segue.destination as? FieldsTVC
        self.textField.text = FieldsTVC?.textField?.text
        self.textView.text = FieldsTVC?.textView?.text
    }
}
  

上面的代码有' textField'和' textView'作为UIViewController中的属性,将值赋给。

但是我相信它不会起作用,因为我在变化之前得到了值。请为我提供一种功能性的方法。

1 个答案:

答案 0 :(得分:6)

当您加载主视图时,容器会对其指定的初始/根ViewController执行segue。此时,您可以获得对它的引用:

var theFieldsTVC: FieldsTVC?

现在,在准备segue时,分配该变量:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if segue.identifier == "TVCSegue" {

        if let vc = segue.destination as? FieldsTVC {
            theFieldsTVC = vc
        }

    }
}       

然后,你可以:

@IBAction func buttonTapped(_ sender: Any) {

    self.textField.text = theFieldsTVC?.textField?.text
    self.textView.text = theFieldsTVC?.textView?.text

}