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