Swift 4-根据不同的TextField输入启用/禁用两个UI按钮

时间:2018-08-21 02:08:18

标签: input uibutton textfield

我觉得我缺少此代码集的基本步骤,并且非常感谢任何见解,因为尽管搜索了这些论坛,但仍找不到很好的解决方案。

我有四个文本字段,两个UI按钮和两个标签。

输入了前三个文本字段后,应启用一个UI按钮,以允许我计算这三个文本字段的总和并将其显示在第一个标签上。

仅当输入了第四个文本字段时,才应启用第二个UI按钮。第二个标签将包含所有四个文本字段的总和。如果不满足这些条件,则应禁用UI按钮。

我的第一种情况工作得很好,但是当我尝试合并第四个文本字段和第二个按钮时,事情变得一团糟。请参阅最后一个片段:regregVTI = AIVTI.text,!regurgVTI.isEmpty

AICalc类:UIViewController {

@IBOutlet weak var PISARadius: UITextField!
@IBOutlet weak var aliasingVelocity: UITextField!
@IBOutlet weak var AIVMax: UITextField!
@IBOutlet weak var AIVTI: UITextField!
@IBOutlet weak var EROAAnswer: UILabel!
@IBOutlet weak var RegurgVolumeAnswer: UILabel!
@IBOutlet weak var calcEROAButton: UIButton!
@IBOutlet weak var regurgVolumeButton: UIButton!

@IBAction func calcEROA(_ sender: UIButton)
{
    EROAAnswer.text = String(Int(PISARadius.text!)! + Int(aliasingVelocity.text!)! + Int(AIVMax.text!)!)
}

@IBAction func calcRegurgVolume(_ sender: UIButton)
{
    RegurgVolumeAnswer.text = String(Int(PISARadius.text!)! + Int(aliasingVelocity.text!)! + Int(AIVMax.text!)! + Int(AIVTI.text!)!)
}

override func viewDidLoad()
{
    super.viewDidLoad()
    calcEROAButton.isEnabled = false
    regurgVolumeButton.isEnabled = false
    PISARadius.addTarget(self, action: #selector(editingChanged(_:)), for: .editingChanged)
    aliasingVelocity.addTarget(self, action: #selector(editingChanged(_:)), for: .editingChanged)
    AIVMax.addTarget(self, action: #selector(editingChanged(_:)), for: .editingChanged)
    AIVTI.addTarget(self, action: #selector(editingChanged(_:)), for: .editingChanged)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
@objc func editingChanged(_ textField: UITextField) {
    if textField.text?.count == 1 {
        if textField.text?.first == " " {
            textField.text = ""
            return
        }
    }
    guard
        let pisa = PISARadius.text, !pisa.isEmpty,
        let aliasing = aliasingVelocity.text, !aliasing.isEmpty,
        let vmax = AIVMax.text, !vmax.isEmpty
        else {
            calcEROAButton.isEnabled = false
            regurgVolumeButton.isEnabled = false
            return
    }
    calcEROAButton.isEnabled = true

  let regurgVTI = AIVTI.text, !regurgVTI.isEmpty

}

}

1 个答案:

答案 0 :(得分:0)

使用textField.tag或textField.identifier标识文本字段,即可轻松解决问题。

假设您的前三个文本字段同时具有标签1,2,3。

然后在您的文本字段中进行end_Enditing:-

if textfield.tag == 1 {
      //Do whatever you want
}
if textfield.tag == 2 {
      //Do whatever you want
}
if textfield.tag == 3 {
      //Do whatever you want
}

参考此内容可能会解决您的问题。 好运。