我有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
}
}
上面的代码有' textField'和' textView'作为UIViewController中的属性,将值赋给。
但是我相信它不会起作用,因为我在变化之前得到了值。请为我提供一种功能性的方法。
答案 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
}