Swift - 自动计算
Swift - Automatic Caluclation
我目前正在使用 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)
}
}
}
尝试在您的按钮上使用 addTarget
。但是您的计算器需要知道您何时完成输入第二个数字,除非您只使用特定长度的数字?。如果您希望它在您键入 id 时更新答案,请使用类似的东西。
inputLabel.addTarget(self, action: #selector(yourCaculateMethod), for: .editingChanged)
然后让您的 equalsLabel.text
等于结果。这会随时更新它。
我也考虑将您的 inputLabel
命名为 inputTextField
,因为它有点误导
希望这对您有所帮助。应该做你想做的。
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)
}
如果您有任何疑问,请告诉我。
我目前正在使用 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)
}
}
}
尝试在您的按钮上使用 addTarget
。但是您的计算器需要知道您何时完成输入第二个数字,除非您只使用特定长度的数字?。如果您希望它在您键入 id 时更新答案,请使用类似的东西。
inputLabel.addTarget(self, action: #selector(yourCaculateMethod), for: .editingChanged)
然后让您的 equalsLabel.text
等于结果。这会随时更新它。
我也考虑将您的 inputLabel
命名为 inputTextField
,因为它有点误导
希望这对您有所帮助。应该做你想做的。
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)
}
如果您有任何疑问,请告诉我。