swift - 当我按 + 或 - (Swift5) 时计算器不清除标签?
问题描述
当我按下+
或-
标签时,标签屏幕上的前一个数字不会被清除。
import UIKit
enum modes {
case not_set
case addition
case subtraction
}
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
var labelString:String = "0"
var currentMode:modes = .not_set
var savedNum:Int = 0
var previousNumber: Double = 0
var lastButtonWasMode:Bool = false
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated
}
@IBAction func plusButton(_ sender: Any) {
changeModes(newMode: .addition)
}
@IBAction func minusButton(_ sender: Any) {
changeModes(newMode: .subtraction)
}
@IBAction func equalsButton(_ sender: Any) {
}
@IBAction func clearButton(_ sender: Any) {
labelString = "0"
currentMode = .not_set
savedNum = 0
lastButtonWasMode = false
label.text = "0"
}
@IBAction func pressNumber(_ sender: UIButton) {
let stringValue:String? = sender.titleLabel?.text
labelString = labelString.appending(stringValue!)
updateText()
if(lastButtonWasMode) {
lastButtonWasMode = false
labelString = "0"
}
}
func updateText() {
guard let labelInt:Int = Int(labelString) else {
return
}
if (currentMode == .not_set) {
savedNum = labelInt
}
label.text = "\(labelInt)"
}
func changeModes(newMode:modes) {
if (savedNum == 0) {
return
}
currentMode = newMode
lastButtonWasMode = true
}
}
+
当我按或-
时如何让它清除主屏幕(标签)x
?
解决方案
当您键入运算后的第一个数字时,计算器通常会清除显示。将属性添加到您的ViewController
:
var enteringANumber = false
在plusButton()
, minusButton()
, equalButton()
, 并clearButton()
设置enteringANumber
为false
.
然后在 中pressNumber
,检查它:
@IBAction func pressNumber(_ sender: UIButton) {
let stringValue = sender.titleLabel?.text
if !enteringANumber {
labelString = ""
enteringANumber = true
}
...
}
推荐阅读
- nginx - 即使使用 SSL 证书,Quart 上的不和谐 OAUTH 也会收到 InsecureTransportError
- dart - 在渡槽飞镖中发送帖子请求
- java - 从 Java 客户端连接到 IBM MQ,无需任何 IBM 依赖项 jar
- sql - 如何禁用 SQL Server 中数据库的所有 DML 触发器?
- amazon-web-services - 如果我使用弹性 Beanstalk,如何设法将反向 DNS 分配给弹性 IP
- hibernate - 使用 @NotBlank 注释时提交事务时测试失败并出现错误
- node.js - 邮递员调用 AWS API Gateway 以触发 AWS lambda 函数不起作用
- c - 如何理解 C 程序中定义的这段代码?
- r - R 线性回归 - 插值 - 近似 - xout 给出 NA
- ios - rxswift operator share replay 不能用?