如何从 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
}
我有 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
}