Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当UITextfield数据为空或已填充时,如何禁用/启用按钮?_Ios_Swift - Fatal编程技术网

Ios 当UITextfield数据为空或已填充时,如何禁用/启用按钮?

Ios 当UITextfield数据为空或已填充时,如何禁用/启用按钮?,ios,swift,Ios,Swift,这是我的功能。正如您在上面看到的,当文本字段为空(或零)且按钮被禁用时,我能够在控制台中接收消息。然而,当数据输入到我的文本字段时,我没有得到响应。如果有人能帮我解决这个或类似的问题,我将不胜感激 func logicDataCheck() { let textfield: Array<Bool?> = [lastNameTextField.text?.isEmpty, phoneNumberTextField.text?.isEmpty, firstNameTextFiel

这是我的功能。正如您在上面看到的,当文本字段为空(或零)且按钮被禁用时,我能够在控制台中接收消息。然而,当数据输入到我的文本字段时,我没有得到响应。如果有人能帮我解决这个或类似的问题,我将不胜感激

func logicDataCheck() {
    let textfield: Array<Bool?> = [lastNameTextField.text?.isEmpty, phoneNumberTextField.text?.isEmpty, firstNameTextField.text?.isEmpty]

    if (textfield[0]! || textfield [1]! || textfield [2]!)
    {
        print("Textfield is empty")
        continue_Button.isEnabled = false
        continue_Button.alpha = 0.5
    }
    else 
    {
        if (textfield[0]! || textfield [1]! || textfield [2]!) {
            print("Textfield is full")
            continue_Button.isEnabled = true
            continue_Button.alpha = 1
        }
    }
}
func logicDataCheck(){
让textfield:Array=[lastNameTextField.text?.isEmpty,phoneNumberTextField.text?.isEmpty,firstNameTextField.text?.isEmpty]
如果(文本字段[0]!| |文本字段[1]!| |文本字段[2]!)
{
打印(“文本字段为空”)
continue_Button.isEnabled=错误
继续按钮。alpha=0.5
}
其他的
{
如果(文本字段[0]!| |文本字段[1]!| |文本字段[2]!){
打印(“文本字段已满”)
continue_Button.isEnabled=真
继续按钮。alpha=1
}
}
}

在您的
视图DIDLOAD
中,您可以添加以下行:

configureTextFields()
// you'll need to call updateTextField() when the view loads the first time.
// After the configureTextFields() adds targets, it'll get called when editing changes
updateTextField()
另外,添加以下方法:

func configureTextFields() {
    // create an array of textfields
    let textFieldArray = [firstNameTextField, lastNameTextField, phoneNumberTextField]

    // configure them...
    for textField in textFieldArray {
        // make sure you set the delegate to be self
        textField?.delegate = self
        // add a target to them
        textField?.addTarget(self, action: #selector(ViewController.updateTextField), for: .editingChanged)
    }
}

// this is the target that gets called when editing changes
func updateTextField() {
    // create an array of textFields
    let textFields = [firstNameTextField, lastNameTextField, phoneNumberTextField]
    // create a bool to test if a textField is blank in the textFields array
    let oneOfTheTextFieldsIsBlank = textFields.contains(where: {($0?.text ?? "").isEmpty})
    if oneOfTheTextFieldsIsBlank {
        continueButton.isEnabled = false
        continueButton.alpha = 0.5
    } else {
        continueButton.isEnabled = true
        continueButton.alpha = 1.0
    }
}
您需要使ViewController采用UITextFieldDelegate协议。您可以这样做:

class ViewController: UIViewController, UITextFieldDelegate {
// the code inside your view controller
}
这里有一个链接,指向一个

试试这个

func logicDataCheck() {
    let textfield: Array<Bool> = [lastNameTextField.text?.isEmpty, phoneNumberTextField.text?.isEmpty, firstNameTextField.text?.isEmpty]

    if (textfield[0] || textfield [1] || textfield [2])
    {
        print("Textfield is empty")
        continue_Button.isEnabled = false
        continue_Button.alpha = 0.5
    }
    else 
    {
        print("Textfield is full")
        continue_Button.isEnabled = true
        continue_Button.alpha = 1
    }
}
func logicDataCheck(){
让textfield:Array=[lastNameTextField.text?.isEmpty,phoneNumberTextField.text?.isEmpty,firstNameTextField.text?.isEmpty]
if(textfield[0]| | textfield[1]| | textfield[2])
{
打印(“文本字段为空”)
continue_Button.isEnabled=错误
继续按钮。alpha=0.5
}
其他的
{
打印(“文本字段已满”)
continue_Button.isEnabled=真
继续按钮。alpha=1
}
}

请注意,
emptyCheck
实际上是一个可选字符串数组,当其中一个字符串为
nil
时,您应该禁用该按钮。因此,检查应该是
{$0!=false}
。此外,如果您定义一个文本字段数组,例如
let textFields:[UITextField]=[firstNameTextField,…]
然后
let emptyCheck=textFields.contains(其中:{($0.text??).isEmpty})
@Sulthan Awesome feedback。我根据您的输入进行了更新。@KyleC.Beachem答案已更新。如果答案对你有效,请点击复选标记接受答案。刚刚接受,谢谢@Adrian