文本字段不为空 Swift 中显示保存按钮
textfield not empty show save button in Swift
我的保存按钮在下面的代码中被函数 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)
}
}
您收到此错误是因为您的函数 saveBtnHidden()
在 viewDidLoad()
中仅被调用 一次 。当您的文本字段中的文本更改时,它不会再次被调用。要检测文本何时更改,您需要向文本字段添加一个目标,该目标在文本更改时调用一个函数 (.editingChanged
),如下所示:
nicknameField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
然后在 textFieldDidChange
中调用您的 saveBtnHidden()
函数:
func textFieldDidChange(_ textField: UITextField) {
saveBtnHidden()
}
代码改编自:
使用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...
我的保存按钮在下面的代码中被函数 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)
}
}
您收到此错误是因为您的函数 saveBtnHidden()
在 viewDidLoad()
中仅被调用 一次 。当您的文本字段中的文本更改时,它不会再次被调用。要检测文本何时更改,您需要向文本字段添加一个目标,该目标在文本更改时调用一个函数 (.editingChanged
),如下所示:
nicknameField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
然后在 textFieldDidChange
中调用您的 saveBtnHidden()
函数:
func textFieldDidChange(_ textField: UITextField) {
saveBtnHidden()
}
代码改编自:
使用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...