文本字段不显示在Swift中显示保存按钮

问题描述 投票:0回答:2

我的保存按钮隐藏在下面的代码中的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)
    }
}
swift button textfield hidden visible
2个回答
1
投票

您收到此错误是因为您的函数saveBtnHidden()仅在viewDidLoad()中调用一次。当文本字段中的文本发生更改时,不会再次调用它。要检测文本何时更改,您需要在文本字段中添加一个目标,该字段在更改时调用函数(.editingChanged),如下所示:

nicknameField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)

然后在textFieldDidChange中调用你的saveBtnHidden()函数:

func textFieldDidChange(_ textField: UITextField) {
    saveBtnHidden() 
}

代码改编自:How do I check when a UITextField changes?


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...
© www.soinside.com 2019 - 2024. All rights reserved.