我的保存按钮隐藏了下面代码中的函数saveBtnHidden()
。但是,当在文本字段中键入文本时,保存按钮不会再出现。我尝试过类似的多种解决方案。每次我输入文本字段时,保存按钮都不会显示。
import UIKit
class TableViewController: UITableViewController, UITextFieldDelegate {
@IBOutlet weak var saveBtn: UIButton!
@IBOutlet var nicknameField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
saveBtnHidden()
}
func saveBtnHidden() {
if (nicknameField.text?.isEmpty ?? true) {
// is empty
saveBtn.isHidden = true
} else {
saveBtn.isHidden = false
}
}
@IBAction func saveBtnPressed(_ sender: Any) {
performSegue(withIdentifier: "nextPage", sender: nil)
}
}
答案 0 :(得分:1)
您收到此错误是因为您的saveBtnHidden()
功能在viewDidLoad()
中仅被称为一次。当文本字段中的文本发生更改时,不会再次调用它。要检测文本何时更改,您需要在文本字段中添加一个目标,该字段在更改时调用函数(.editingChanged
),如下所示:
nicknameField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
然后在textFieldDidChange
调用您的saveBtnHidden()
函数:
func textFieldDidChange(_ textField: UITextField) {
saveBtnHidden()
}
答案 1 :(得分:0)
使用delegate通知任何更改。代表是iOS开发和Apple框架的关键部分。
class TableViewController: UITableViewController, UITextFieldDelegate {
@IBOutlet weak var saveBtn: UIButton!
@IBOutlet var nicknameField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
saveBtnHidden()
nicknameField.delegate = self
}
func textFieldDidChange(_ textField: UITextField) {
saveBtnHidden()
}
// More of your source code below...