var displayValue: Double {
get {
return Double(display.text!)!
}
set {
display.text = formatCurrency(value: newValue)
}
}
func formatCurrency(value: Double) -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.alwaysShowsDecimalSeparator = false
formatter.decimalSeparator = ","
formatter.maximumFractionDigits = 2;
formatter.locale = Locale(identifier: Locale.current.identifier)
let result = formatter.string(from: value as NSNumber);
return result!;
}
private var brain = CalculatorBrain()
@IBAction func touchDigit(_ sender: UIButton) {
let digit = sender.currentTitle!
if userIsInTheMiddleOfTyping {
let textCurrentlyInDisplay = display.text!
display.text = textCurrentlyInDisplay + digit
} else {
display.text = digit
userIsInTheMiddleOfTyping = true
}
}
每当我触摸我的按钮时,标签都没有更新。 我想让“显示标签”看起来不错,所以我使用的是NumberFormatter并设置了格式化程序的属性
我试过这个
let result = String(displayValue) + formatter.string(from: value as NSNumber)!;
在我的formatCurreny函数中,但我的应用程序的行为不允许我按+, - (或操作键)
答案 0 :(得分:0)
因为您在display
的设置器中设置了displayValue
标签的格式,但您从未设置该属性。
如果您希望计算器的显示效果看起来不错,那么您需要管理3个变量:
displayValue
Double
,CalculatorBrain
您可以围绕无格式文本设计其他2个变量,如下所示:
var unformattedText: String = "" {
didSet {
display.text = formatCurrency(value: displayValue)
}
}
var displayValue: Double {
get {
return Double(unformattedText)!
}
set {
unformattedText = String(newValue)
}
}
@IBAction func touchDigit(_ sender: UIButton) {
let digit = sender.currentTitle!
if userIsInTheMiddleOfTyping {
unformattedText += digit
} else {
unformattedText = digit
userIsInTheMiddleOfTyping = true
}
}