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

How do I get the property value from a container view in 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
    }
}

The code above has 'textField' and 'textView' as properties in the UIViewController to assign the values to.

但我认为它不起作用,因为我在值发生变化之前就得到了这些值。请为我提供一个实用的方法。

当您的主视图加载时,容器 对其分配的初始/根ViewController 执行转场。届时,您可以获得对它的引用:

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

}