我正在尝试将数据从弹出视图发送到DataView。 它实际上有效!但是,当我返回到弹出视图来编辑文本时,它不会显示已输入并发送到DataView的文本。
我正在通过协议发送数据。
PopupView
protocol DataEnteredDelegate: class {
func userDidEnterInformation(data: String)}
@IBAction func DoneButton(_ sender: Any) {
if let data = openTextView.text {
delegate?.userDidEnterInformation(data: data)
self.dismiss(animated: true, completion: nil)
}
}
DataView
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "openSummary" {
let sendingVC: popupViewController = segue.destination as! popupViewController
sendingVC.delegate = self
}
}
// Protocol receving data from popup
func userDidEnterInformation(data: String) {
addJobSum.text = data
}
答案 0 :(得分:0)
关闭PopupViewController后,它将销毁,并且没有新实例能够知道旧实例作为Text View的文本值所具有的内容。
要解决此问题,请在PopupViewController
内创建一个字符串属性,并使用诸如viewDidLoad()
之类的方法将其值初始化为Text View的text属性:
class PopupViewController: UIViewController {
var textData: String?
/* more code */
func viewDidLoad() {
/* more code */
if let data = textData {
openTextView.text = data
}
}
}
然后,您必须在textData
方法内(在显示之前)为prepare(for:)
注入正确/所需的文本:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "openSummary" {
let sendingVC = segue.destination as! PopupViewController
sendingVC.delegate = self
// This is the new line to be added:
sendingVC.textData = addJobSum.text
}
}