【问题标题】:if else statement using ".isEmpty" not working (swift3)if else 使用“.isEmpty”的语句不起作用(swift3)
【发布时间】:2017-06-27 04:00:08
【问题描述】:

我有一个使用日期选择器存储日期的文本字段。我有一个文本视图,我想在选择日期之前一直隐藏。为此,我有以下代码。

     import UIKit
class ViewController: UIViewController {
@IBOutlet var label: UILabel!
@IBOutlet var thetextField: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()
    label.isHidden = thetextField.text!.isEmpty
     }
func textFieldDidEndEditing(_ textField: UITextField) {
    label.isHidden = textField.text!.isEmpty
}}

【问题讨论】:

  • 代码在viewDidLoad中运行一次。当text 属性发生变化时,您需要始终运行代码。
  • 我在 viewDidAppear 中尝试了同样的事情,但没有成功
  • dptext 的 text 属性在viewDidAppear 中是否发生了变化?当然不是。再一次,您必须在每次出现 dptext.text = .... 后始终运行代码
  • 不要自己调用系统委托方法。您可以将支票写在一行中:label.isHidden = thetextField.text!.isEmpty。将行放在viewDidLoadtextFieldDidEndEditing 中。
  • 我不明白我在 textFieldDidEndEditing 中将 label.isHidden = thetextField.text!.isEmpty 放在哪里。

标签: ios if-statement swift3 textfield is-empty


【解决方案1】:

那是因为您只检查了一次 isEmpty 属性。你需要的是在textFielddelegate 方法中检查这个属性

func textFieldDidEndEditing(_ textField: UITextField) {
    if textField.text.isEmpty {
        enterName.isHidden = true
    } else {
        enterName.isHidden = false
    }
}

编辑

您的代码将如下所示

import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
    @IBOutlet var label: UILabel!
    @IBOutlet var thetextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        label.isHidden = thetextField.text!.isEmpty
        thetextField.delegate = self
    }

    func textFieldDidEndEditing(_ textField: UITextField) {
        label.isHidden = textField.text!.isEmpty
    }
}

【讨论】:

  • 我不知道如何在 viewdidload 中调用该函数。我用你建议的答案编辑了我的问题。标签在加载时是隐藏的,但是当输入文本时,标签仍然以我尝试调用该函数的方式隐藏。
  • 您需要阅读delegates 以及如何使用它们。从长远来看,它们会对您有很大帮助。了解代表后,您可以查看 Apple 网站上的 UITextFielddelegates。这是链接:developer.apple.com/documentation/uikit/uitextfielddelegate
  • 是否需要在 viewdidload 中添加任何内容才能使您的代码正常工作。
  • 是的。您可以在 viewDidLoad 中设置您的 textField 的委托
  • 是 label.isHidden = textField.text!.isEmpty "textField" 部分的 "thetextField" 或 "textField"。
猜你喜欢
  • 2023-03-13
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多