ios - 用 Swift 制作计算器
问题描述
我的问题是我可以单击并为我的第一个值输入多个数字,但是在我使用数学运算符(例如 +、-、*、/)之后,它只允许我输入一个值,这与第一次运行它不同。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var Label: UILabel!
var secondNumber: Double = 0;
var firstNumber: Double = 0;
var performingMath = false
var operatorUsed = 0;
@IBAction func cleartext(_ sender: UIButton) {
Label.text = ""
performingMath = false
}
@IBAction func Numbers(_ sender: UIButton) {
if performingMath {
Label.text = String(sender.tag - 1)
secondNumber = Double(Label.text!)!
performingMath = true
} else {
Label.text = Label.text! + String(sender.tag - 1)
secondNumber = Double(Label.text!)!
}
}
@IBAction func Operators(_ sender: UIButton) {
if Label.text != " " && sender.tag != 11 {
firstNumber = Double(Label.text!)!
if sender.tag == 12 {
Label.text = "+"
} else if sender.tag == 13 {
Label.text = "-"
} else if sender.tag == 14 {
Label.text = "*"
} else if sender.tag == 15 {
Label.text = "/"
}
operatorUsed = sender.tag
performingMath = true
} else if sender.tag == 11 {
if operatorUsed == 12 {
Label.text = String(firstNumber + secondNumber)
}
if operatorUsed == 13 {
Label.text = String(firstNumber - secondNumber)
}
if operatorUsed == 14 {
Label.text = String(firstNumber * secondNumber)
}
if operatorUsed == 15 {
Label.text = String(firstNumber / secondNumber)
}
}
}
}
我希望在使用数学运算符后可以输入尽可能多的值(例如 +-*/)
解决方案
当您在 is 时更新标签的文本时performingMath
,true
您只需分配新值而不是将值添加到现有值(参见第 3 行)
@IBAction func Numbers(_ sender: UIButton) {
if performingMath {
Label.text = String(sender.tag - 1) // !! HERE !!
secondNumber = Double(Label.text!)!
performingMath = true
} else {
Label.text = Label.text! + String(sender.tag - 1)
secondNumber = Double(Label.text!)!
}
}
performingMath
这应该执行与 when is相同的操作false
,因此您只需使用以下内容更新此行:
Label.text = Label.text! + String(sender.tag - 1)