Swift 中的 NIB 文件的空字符串语句无法正常工作

Empty string statement is not working correct with NIB file in Swift

我设置了一个包含 3 个文本字段的 NIB 文件。我想检查字段是否为空。如果不做某事。

我正在使用委托模式检查字段是否已编辑:

@IBAction func didEditingText(_ sender: UITextField) {

    if self.textInputOne.text != "" {
        delegate?.formIsFilled(delegateCalled: true)
    } else {
        delegate?.formIsFilled(delegateCalled: false)
    }

}

此函数链接到每个字段。当它不再为空时,它将激活一个按钮。但是,当我将该字段留空时,它仍会使按钮处于活动状态。据我所知,我的 if 语句正在检查文本输入是否不是空字符串,但我的另一个 VC 中的委托仍然被调用。我该如何解决这个问题?

在 if 条件下,您只检查三个字段之一 (self.textInputOne.text != "")。由于三个字段连接到同一个函数,您需要更改条件,如下所示:

@IBAction func didEditingText(_ sender: UITextField) {

    if sender.text != "" { // You can use !sender.text.isEmpty too
        delegate?.formIsFilled(delegateCalled: true)
    } else {
        delegate?.formIsFilled(delegateCalled: false)
    }
}

这样,当您完成编辑字段时,该函数将检查该字段是否为空并调用您的代理。

如果您有多个文本字段,最好同时检查所有文本/函数:

func validation() -> Bool {
    for tf in [textFieldFirst, textFieldSecond, textFieldThird] {
        guard let text = tf?.text, !text.isEmpty else { return false }
    }
    return true
}

之前描述的函数你可以在里面调用UITextFieldDelegate

func textFieldDidEndEditing(_ textField: UITextField) {
    button.isEnabled = validation()
}

您可以在 viewDidLoad() 或视图初始化后检查您的验证:

override func viewDidLoad() {
    super.viewDidLoad()

    button.isEnabled = validation()
}

您可以查看项目示例in the link

经过正确验证后,您可以使用任何结果调用委托方法。