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

MEn*_*bah 1 ios uicontainerview swift

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

我正在尝试获取TextField和TextView中可用的字符串值.

在此输入图像描述

我尝试使用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
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码将'textField'和'textView'作为UIViewController中的属性来分配值.

但我相信它不起作用,因为我在它们改变之前得到了它们.请为我提供一种功能性的方法.

Don*_*Mag 6

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

var theFieldsTVC: FieldsTVC?
Run Code Online (Sandbox Code Playgroud)

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

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

    if segue.identifier == "TVCSegue" {

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

    }
}       
Run Code Online (Sandbox Code Playgroud)

然后你可以:

@IBAction func buttonTapped(_ sender: Any) {

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

}
Run Code Online (Sandbox Code Playgroud)