文本字段不为空 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...