首页 > 解决方案 > 在 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()

       }

标签: swift3

解决方案


用这个方法替换: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但是这个简单的步骤让你明白你在寻找什么。

快乐编码。


推荐阅读