Калькулятор не очищает метку, когда я нажимаю + или - (Swift5)? - PullRequest
0 голосов
/ 15 июня 2019

Когда я нажимаю + или -, ярлык не очищает предыдущее число на экране ярлыка.

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?

1 Ответ

0 голосов
/ 15 июня 2019

Калькуляторы обычно очищают дисплей при вводе первой цифры после операции.Добавьте свойство к вашему 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
    }

    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...