Swift:UITextField IBAction - EditingChanged - 即使文本字段值发生变化,按钮仍保持启用状态?

时间:2014-11-20 22:41:15

标签: ios if-statement swift uibutton edit

我有两个IBAction用于两个不同的文本字段的EditingChanged。在这些方法中,我有一个if语句,如果两个UITextField都包含整数,则启用一个按钮。问题是,当按钮变为启用状态时,即使我编辑了文本字段并更改它们以使它们具有除整数之外的字符,也会保持启用状态。我该如何解决?提供代码时请彻底清楚,因为我是编程新手。如果你想知道,到目前为止,这是我的代码:

@IBAction func calorieNumberEditingChanged(sender: AnyObject) {
    // If both variables are true and the text fields contain integers, enable button
    if self.yourWeightFilled && self.calorieNumberFilled {
        self.calculateButton.enabled = true
    }
}
@IBAction func yourWeightEditingChanged(sender: AnyObject) {
    // If both variables are true and the text fields contain integers, enable button
    if self.yourWeightFilled && self.calorieNumberFilled {
        self.calculateButton.enabled = true
    }
}

2 个答案:

答案 0 :(得分:1)

这与Evan的答案类似,但我们可以简化代码。

func validateCalculateButton() {
    self.calculateButton.enabled = 
        (self.yourWeightFilled && self.calorieNumberFilled)
}

@IBAction func calorieNumberEditingChanged(sender: AnyObject) {
    self.validateCalculateButton()
}

@IBAction func yourWeightEditingChanged(sender: AnyObject) {
    self.validateCalculateButton()
}

确实,这里不需要两个单独的@IBAction方法。您可以将两个UI元素链接到相同的方法,除非您需要为您在此处发布的代码中未包含的每个元素执行单独的操作。

答案 1 :(得分:0)

尝试添加else语句并将其更改回未启用。

@IBAction func calorieNumberEditingChanged(sender: AnyObject) {
    // If both variables are true and the text fields contain integers, enable button
    if self.yourWeightFilled && self.calorieNumberFilled {
        self.calculateButton.enabled = true
    } else {
        self.calculateButton.enabled = false
    }
}
@IBAction func yourWeightEditingChanged(sender: AnyObject) {
    // If both variables are true and the text fields contain integers, enable button
    if self.yourWeightFilled && self.calorieNumberFilled {
         self.calculateButton.enabled = true
    } else {
        self.calculateButton.enabled = false
    }
}