Press "Enter" to skip to content

Swift App – iOS Calculator Part-2

In the previous article, I wrote the design of the iOS Calculator. In this article, I will try to write the idea of the how calculator work in the iOS Calculator.

Firstly, I opened the project which we created before. In the project, I go ViewController.swift and then i add the operation buttons, number buttons and the result label from MainStoryboard.

@IBOutlet weak var resultLabel: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func operationButtons(_ sender: Any) {
    }
    
    @IBAction func numberButtons(_ sender: Any) {
    }

After this process there is nothing to do in the MainStoryboard. In the calculator, I take 2 number from the user so i should have 2 number variable which names are firstNumber and nextNumber and i should know the if the one of the operation button clicked so i add the boolean variable which name is isMath. Also i should keep the value of the which operation clicked so i create a variable which name is operation keeps the tag of the operation buttons.

    var firstNumber : Double = 0
    var nextNumber : Double = 0
    var isMath : Bool = false
    var operation : Int = 0

After the making initialization of the variables, I made the controls of the operationButtons function. I controlled the value of the resultLabel and the which operation clicked. By using the if-else method, I made the process of the giving value to the firstNumber and nextNumber.

@IBAction func operationButtons(_ sender: UIButton) {
        if resultLabel.text != "" && sender.tag != 11 && sender.tag != 17{
            firstNumber = Double(resultLabel.text!)!
            if sender.tag == 12 {
                //%
                resultLabel.text = "%"
                
            }
            else if sender.tag == 13 {
                // /
                resultLabel.text = "/"
                
            }
            else if sender.tag == 14 {
                // *
                resultLabel.text = "X"
            }
            else if sender.tag == 15 {
                // -
                resultLabel.text = "-"
            }
            else if sender.tag == 16 {
                // +
                resultLabel.text = "+"
            }
            operation = sender.tag
            isMath = true
        }
        else if sender.tag == 11{
            firstNumber = 0
            nextNumber = 0
            operation = 0
            resultLabel.text = ""
        }
        else if sender.tag == 17{
            if operation == 12 {
                resultLabel.text = String(firstNumber / 100)
            }
            else if operation == 13 {
                resultLabel.text = String(firstNumber / nextNumber)
            }
            else if operation == 14 {
                resultLabel.text = String(firstNumber * nextNumber)
            }
            else if operation == 15 {
                resultLabel.text = String(firstNumber - nextNumber)
            }
            else if operation == 16 {
                resultLabel.text = String(firstNumber + nextNumber)
            }
        }
    }

After the operation process, i give the value of the firstNumber and nextNumber in the numberButtons function by checking the value of the isMath. Tag of the number buttons is +1 more the label of the button, That’s why i delete -1 from the tag.

 @IBAction func numberButtons(_ sender: UIButton) {
        if isMath == true {
            resultLabel.text = String(sender.tag - 1)
            nextNumber = Double(resultLabel.text!)!
            isMath = false
        }
        else{
            resultLabel.text = resultLabel.text! + String(sender.tag - 1)
            nextNumber = Double(resultLabel.text!)!
        }
    }

After the all these process, our calculator will work right. You can reach the project by clicking here.

If you have any question you can ask via e-mail or comments.

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *