gpt4 book ai didi

Swift 将数据从弹出窗口发送到另一个 View

转载 作者:行者123 更新时间:2023-11-30 10:58:21 25 4
gpt4 key购买 nike

我正在尝试将数据从弹出 View 发送到 DataView。它确实有效!但是,当我返回弹出 View 编辑文本时,它不会显示输入并发送到 DataView 的文本。

我正在通过协议(protocol)发送数据。

弹出 View

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)
}

}

数据 View

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
}

最佳答案

PopupViewController 被关闭后,它会被销毁,并且任何新实例都无法知道旧实例的 TextView 文本值是什么。

要修复此问题,请在 PopupViewController 内创建一个字符串属性,并使用某个方法(例如 viewDidLoad())内的值初始化 TextView 的文本属性:

class PopupViewController: UIViewController {
var textData: String?

/* more code */

func viewDidLoad() {
/* more code */

if let data = textData {
openTextView.text = data
}
}
}

然后,您必须在 prepare(for:) 方法中为 textData 注入(inject)正确/所需的文本(就在其呈现之前):

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
}
}

关于Swift 将数据从弹出窗口发送到另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53688871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com