我目前正在使用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)
}
}
}
答案 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
,因为它有点误导