首页 > 解决方案 > 当我按 + 或 - (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

标签: swift

解决方案


当您键入运算后的第一个数字时,计算器通常会清除显示。将属性添加到您的ViewController

var enteringANumber = false

plusButton(), minusButton(), equalButton(), 并clearButton()设置enteringANumberfalse.

然后在 中pressNumber,检查它:

@IBAction func pressNumber(_ sender: UIButton) {
    let stringValue = sender.titleLabel?.text

    if !enteringANumber {
        labelString = ""
        enteringANumber = true
    }

    ...
}

推荐阅读