if if语句取决于textfield(swif3)

时间:2017-07-04 01:50:51

标签: ios swift3 delegates textfield is-empty

我希望我的代码只显示标签,当且仅当textfiled中有文本时,如果没有文本,则应隐藏标签。而已。我在下面的代码没有按照上面的描述进行操作。

   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
}}}

2 个答案:

答案 0 :(得分:2)

您的代码无效,因为仅在加载View Controller时执行检查。

您需要做的是每次用户完成编辑文本字段时运行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

答案 1 :(得分:0)

使用以下代码。

 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