Swift - 将数据从 UITextField 传递到另一个 viewController 中的 TextView

Swift - Passing data form UITextField to TextView in another viewController

我知道,这个问题的主题之前已经被问过好几次了,但是我没有得到正确的解决方案,所以我希望有人能帮助我。

我有两个viewControllers。在 firstVC 中,我将文本更改为 textView。此文本存储在 UserDefaults 中。所以现在,我想在 textView 中显示 secondVC 上存储的文本。

我的 firstVC 代码:

class editprofileViewController: UIViewController {

    @IBOutlet weak var changeTextInput: UITextField!

    let defaults = UserDefaults.standard

    override func viewDidLoad() {
        super.viewDidLoad()

        let stringKey = UserDefaults.standard
        changeTextInput.text = stringKey.string(forKey: "savedStringKey")

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @IBAction func change(_ sender: Any) {

        let myText = changeTextInput.text;
        UserDefaults.standard.set(myText, forKey: "savedStringKey")
        UserDefaults.standard.synchronize()

    }

}

这里我把文本写在textfield里面然后存起来

我的secondVC:

    self.bioTxt.text = // here should be the text from firstVC
    bioTxt.isUserInteractionEnabled = false
    bioTxt.textAlignment = NSTextAlignment.center

感谢您的帮助!

您可以使用 UserDefaults.standard.string(forKey: ) 函数来获取存储在 UserDefaults 中的值。试试这个

self.bioTxt.text = UserDefaults.standard.string(forKey: "savedStringKey")

每次都存储在 USerDeaults 中是不可取的。请记住,用户默认值可以保存少量数据。您可以在此输入的唯一非常需要的信息。

对于您的场景,如果您每次都从 FirstVC 导航到 SecondVC,那么只需在第二个视图中全局添加一个变量控制器并在导航到第二个视图控制器之前在 firstView 控制器中分配。

第一个ViewController

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var txtView: UITextView! //your textView

override func viewDidLoad() {
    super.viewDidLoad()

}

//MARK: - Button Action
@IBAction func btnClick(_ sender: UIButton) {

    let userDefaultStore = UserDefaults.standard //userDefault object
    userDefaultStore.set(txtView.text, forKey: "key_Value") //store textView value in userDefault

    //navigate secondViewController
    let secondVC = storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
    self.navigationController?.pushViewController(secondVC, animated: true)
}
}

第二个ViewController

import UIKit

class SecondViewController: UIViewController {

@IBOutlet weak var txtView: UITextView! // your textView
override func viewDidLoad() {
    super.viewDidLoad()

        let userDefault = UserDefaults.standard //create UserDefault object

        txtView.text = userDefault.string(forKey: "key_Value")!//get userdefault value using same key which used to store date and set in textView
        txtView.isUserInteractionEnabled = false
}
}