用Swift中的数据取消隐藏UITextFields



我正在尝试为工作构建一个应用程序,在那里我可以为每台机器输入各种作业。我总共有9个UITextFields,它们在加载视图时被隐藏。我有一个添加作业按钮,它将取消隐藏字段以输入文本。我还有一个保存按钮,它将把数据保存到UserDefaults。我的问题是当我保存数据并退出应用程序时。加载视图时,UITextFields将再次隐藏。我可以按下添加作业按钮,它会与保存的数据一起出现。我想要的是,如果在退出应用程序之前UITextFields中有文本,那么它们就保持可见。我似乎不知道怎样才能做到这一点。我对编程很陌生,如果您能提供任何帮助,我将不胜感激。

var addJobButtonPressed = 0
let defaults = UserDefaults.standard

@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!
@IBOutlet weak var textField3: UITextField!
@IBOutlet weak var textField4: UITextField!
@IBOutlet weak var textField5: UITextField!
@IBOutlet weak var textField6: UITextField!
@IBOutlet weak var textField7: UITextField!
@IBOutlet weak var textField8: UITextField!
@IBOutlet weak var textField9: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
textField1.isHidden = true
textField2.isHidden = true
textField3.isHidden = true
textField4.isHidden = true
textField5.isHidden = true
textField6.isHidden = true
textField7.isHidden = true
textField8.isHidden = true
textField9.isHidden = true
textField1.text = defaults.object(forKey: "Job1") as? String
textField2.text = defaults.object(forKey: "Job2") as? String
}
@IBAction func addJobButtonPressed(_ sender: Any) {
addJobButtonPressed += 1
if addJobButtonPressed == 1 {
self.textField1.isHidden = false
}
}

@IBAction func saveButton(_ sender: Any) {
defaults.set(textField1.text, forKey: "Job1")
defaults.set(textField2.text, forKey: "Job2")
defaults.synchronize()
}

用此方法替换viewDidLoad()

override func viewDidLoad() {
super.viewDidLoad()
updateTextFieldsVisibility()

}

添加以下两种方法:

func updateTextFieldsVisibility(){
updateTextFieldText(textField: textField1, key: "Job1")
updateTextFieldText(textField: textField2, key: "Job2")
updateTextFieldText(textField: textField3, key: "Job3")
updateTextFieldText(textField: textField4, key: "Job4")
updateTextFieldText(textField: textField5, key: "Job5")
updateTextFieldText(textField: textField6, key: "Job6")
updateTextFieldText(textField: textField7, key: "Job7")
updateTextFieldText(textField: textField8, key: "Job8")
updateTextFieldText(textField: textField9, key: "Job9")
}

func updateTextFieldText(textField: UITextField, key: String){
if defaults.object(forKey: key) != nil {
textField.isHidden = false
textField.text = defaults.object(forKey: key) as? String
}
else{
textField.isHidden = true
}
}

虽然它可以通过viewWithTag属性或IBOutletArray来完成,但这些简单的步骤可以让您了解您在寻找什么。

快乐的编码。

最新更新