swift3 - 在 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
但是这个简单的步骤让你明白你在寻找什么。
快乐编码。
推荐阅读
- python - 如何调用此函数来检查是否收到消息然后发送响应?
- r - 如何将时间序列数据填充到数据框中?
- python - Python zmq 连接
- hive - 通过返回 null 和错误的结果来进行 Hive 订单
- java - 仅提示用户输入正数
- c++ - 当节点通过函数并被接受为双指针时,如何使用双指针查找节点中的值?
- windows - Windows - 使用“.txt”或“.zip”写入文件说访问被拒绝
- c++ - 为什么在模板声明中使用类型说明符时可以被视为限定 ID
- python - 有没有办法,使用 discord.py 发送表情符号而不添加他们的 ID 号
- svg - 如何将生成的解析树保存为 IntelliJ 上 ANTLR4 插件的 .svg 文件?