Swift - 自动计算

时间:2017-01-25 11:29:11

标签: swift swift3 calculator

我目前正在使用swift构建计算器应用程序。 我希望计算是自动的,而不是我按=按钮。 EQLabel是我想要计算的地方 和inputLabel是用户可以在其中看到等式的示例,例如1 + 5 下面是我的计算器代码。

// Start of Calculator
@IBOutlet weak var EQLabel: UITextField!
@IBOutlet weak var inputLabel: UITextField!

var numberOnScreen = 0;
var previousNumber = 0;
var performingMath = false
var operation = 0;

@IBAction func numbers(_ sender: UIButton) {
    if performingMath == true {
        inputLabel.text = String(sender.tag-1)
        numberOnScreen = Int(Double(inputLabel.text!)!)
        performingMath = false
    }
    else {
        inputLabel.text = String(sender.tag-1)
        numberOnScreen = Int(Double(inputLabel.text!)!)
    }
}

@IBAction func multiButtons(_ sender: UIButton) {
    if inputLabel.text != "" && sender.tag != 15 {
        previousNumber = Int(Double(inputLabel.text!)!)
        // Plus
        if sender.tag == 11 {
             inputLabel.text! = "+"
        }
        // Times
        if sender.tag == 12 {
             inputLabel.text = "x"
        }
        // Minus
        if sender.tag == 13 {
             inputLabel.text = "-"
        }
        // Divide
        if sender.tag == 14 {
             inputLabel.text = "/"
        }

        operation = sender.tag
        performingMath = true
    }
    else if sender.tag == 15 {
        if operation == 11 {
            EQLabel.text = String(previousNumber + numberOnScreen)
        }
        if operation == 12 {
           EQLabel.text = String(previousNumber * numberOnScreen)
        }
        if operation == 13 {
            EQLabel.text = String(previousNumber - numberOnScreen)
        }
        if operation == 14 {
            EQLabel.text = String(previousNumber / numberOnScreen)
        }
    }

}

2 个答案:

答案 0 :(得分:0)

希望这会有所帮助。应该做你想要的。

    override func viewDidLoad() {
       yourTextField.addTarget(self, action: #selector(self.calculateTotal(_:)), forControlEvents: UIControlEvents.EditingChanged)
   }

    func calculateTotal() {
       let totalInt = Int(firstTextField.text!) + Int(secondTextField.text!)
       totalLabel.text = String(totalInt)
    }

如果您有任何疑问,请告诉我。

答案 1 :(得分:-1)

尝试在按钮上使用addTarget。但是你的计算器需要知道你输入第二个数字的时间,除非你只使用一定长度的数字?如果您希望它在键入id时更新答案,请使用类似的内容。

inputLabel.addTarget(self, action: #selector(yourCaculateMethod), for: .editingChanged) 

然后让你的equalsLabel.text等于结果。这会在你去的时候更新它。

我想考虑将inputLabel命名为inputTextField,因为它有点误导