If else 语句取决于文本字段 (swif3)

If else statement depending on textfield (swif3)

我希望我的代码仅当且仅当文本文件中有文本时才显示标签,如果没有文本,则应隐藏标签。而已。我下面的代码没有执行我上面描述的内容。

   import UIKit
class ViewController: UIViewController {

  @IBOutlet var label: UILabel!
  @IBOutlet var txtfield: UITextField!
 override func viewDidLoad() {
super.viewDidLoad()
appear()

  }
   func appear() {

if (txtfield.text?.isEmpty)! {
    label.isHidden = true

}
else {
    label.isHidden = false
}}}

您的代码将无法运行,因为检查仅在加载视图控制器时执行一次。

您需要做的是 运行 每次用户完成编辑文本字段时的 appear() 函数。

所以只需将文本视图的委托设置到这个视图控制器并实现这个功能:

optional func textViewDidEndEditing(_ textView: UITextView)

https://developer.apple.com/documentation/uikit/uitextviewdelegate/1618628-textviewdidendediting

然后调用里面的appear()就可以了

编辑:文本字段版本

optional func textFieldDidEndEditing(_ textField: UITextField)

https://developer.apple.com/documentation/uikit/uitextfielddelegate/1619591-textfielddidendediting

使用下面的代码。

 override func viewWillAppear(_ animated: Bool)
    {
        textChanged(txtField)
    }

    func textChanged(_ textField: UITextField) {

        if textField.text == ""
        {
            textField.isHidden = true
        }
        else
        {
            textField.isHidden = false
        }
        print("Hello")
    }

    override func viewDidLoad()
    {
        super.viewDidLoad()
        txtField.addTarget(self, action: #selector(textChanged(_:)),for: .allEvents)
    }
  • func textChanged 将隐藏你的 textField 如果它是空的。
  • 将其添加到 viewWillAppear 将在屏幕出现时检查 textField
  • viewDidLoad 中,每个事件的目标 (textChanged) 添加到 textField