【发布时间】:2020-03-01 08:52:41
【问题描述】:
我使用 Xcode 构建了一个简单的 iOS 计算器,它是一个视图控制器和一个类,我必须将计算器逻辑放入一个单独的类中,但我不是确定如何去做。我是在原始类内部还是外部创建一个新类?原始类有@IBAction func numberPressed 和@IBAction func operandPressed
如何将输入传递给我需要创建的新 Calculator 类?
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var lblDisplay: UILabel!
var numberOnDisplay: Double = 0
var previousNumber: Double = 0
var operand = 0
var isPerformingOperand = false
override func viewDidLoad() {
super.viewDidLoad()
lblDisplay.text = ""
}
// Inputs whatever number is pressed 0-9
@IBAction func numberPressed(_ sender: Any) {
let tag = (sender as! UIButton).tag
if isPerformingOperand == true {
isPerformingOperand = false
lblDisplay.text = String(tag)
numberOnDisplay = Double(lblDisplay.text!)!
} else {
lblDisplay.text = lblDisplay.text! + String(tag)
numberOnDisplay = Double(lblDisplay.text!)!
}
}
// Performs the operands including decimal, clear and backspace
@IBAction func operandPressed(_ sender: Any) {
let tag = (sender as! UIButton).tag
/* Operands: = (99), . (10) X (12), ÷ (13), - (14), + (15) */
if tag == 10 {
if lblDisplay.text?.range(of: ".") == nil {
lblDisplay.text! += "."
}
}
if tag == 12 {
isPerformingOperand = true
previousNumber = Double(lblDisplay.text!)!
lblDisplay.text = "*"
operand = tag
} else if tag == 13 {
isPerformingOperand = true
previousNumber = Double(lblDisplay.text!)!
lblDisplay.text = "÷"
operand = tag
} else if tag == 14 {
isPerformingOperand = true
previousNumber = Double(lblDisplay.text!)!
lblDisplay.text = "-"
operand = tag
} else if tag == 15 {
isPerformingOperand = true
previousNumber = Double(lblDisplay.text!)!
lblDisplay.text = "+"
operand = tag
}
else if tag == 16 {
if lblDisplay.text != "" {
lblDisplay.text?.removeLast();
}
}
/* clear button tab17 */
else if tag == 17 {
lblDisplay.text = ""
previousNumber = 0
numberOnDisplay = 0
operand = 0
}
else if tag == 99 {
/* = / + - */
// operand tag
if operand == 12 {
lblDisplay.text = String(previousNumber * numberOnDisplay)
} else if operand == 13 {
lblDisplay.text = String(previousNumber / numberOnDisplay)
} else if operand == 14 {
lblDisplay.text = String(previousNumber - numberOnDisplay)
} else if operand == 15 {
lblDisplay.text = String(previousNumber + numberOnDisplay)
}
}
}
}
【问题讨论】:
-
“我如何将输入传递给我需要创建的新‘计算器逻辑类’?”就像你在任何地方传递任何东西一样。调用方法。
-
从删除标签开始。您不必只使用一种方法来处理所有按钮点击。你的操作数应该是
enum。 -
你想在另一堂课上学什么?
-
@NajeeburRehman 我需要将计算器逻辑移动到一个单独的类中。我相信我需要将数学运算符(x、/、+、- 等)和 clear 移到单独的类中。这是一项作业,根据我最初的编码方式,我真的不知道如何最好地进行。
-
参见斯坦福课程的this video。节目大约在 17 分钟后开始,但引导讨论很有用。
标签: ios swift xcode class calculator