LoginSignup
2
3

More than 3 years have passed since last update.

【swift5】自作電卓アプリを作ってみた

Last updated at Posted at 2020-01-15

まずは全体像から

GIFがこちら

uMMu8OnW.gif

全体のデザインがこちら

スクリーンショット 2020-01-15 22.03.16.png

全体のコード

githubはこちらから
https://github.com/sventouz/calculator

import UIKit

class ViewController: UIViewController {

    var numberOnScreen:Int = 0
    var previousNumber:Int = 0
    var performingMath = false
    var operation = 0

    @IBOutlet weak var label: UILabel!

    @IBAction func numbers(_ sender: UIButton) {

        if performingMath == true {
            label.text = String(sender.tag-1)
            numberOnScreen = Int(label.text!)!
            performingMath = false
        }
        else {
            label.text = label.text! + String(sender.tag-1)
            numberOnScreen = Int(label.text!)!
        }

    }

    @IBAction func buttons(_ sender: UIButton) {

        if label.text != "" && sender.tag != 11 && sender.tag != 16{
            previousNumber = Int(label.text!)!
            if sender.tag == 12{ // ÷
                label.text = "÷";
            }
            else if sender.tag == 13{  // ×
                label.text = "×";
            }
            else if sender.tag == 14{  // -
                label.text = "-";
            }
            else if sender.tag == 15{  // +
                label.text = "+";
            }
            operation = sender.tag
            performingMath = true;
        }
        else if sender.tag == 16 // = が押された時の処理
        {
            if operation == 12{
                label.text = String(previousNumber / numberOnScreen)
            }
            else if operation == 13{
                label.text = String(previousNumber * numberOnScreen)
            }
            else if operation == 14{
                label.text = String(previousNumber - numberOnScreen)
            }
            else if operation == 15{
                label.text = String(previousNumber + numberOnScreen)
            }
        }
        else if sender.tag == 11{ // C が押された時の処理
            label.text = ""
            previousNumber = 0;
            numberOnScreen = 0;
            operation = 0;
        }

    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }

}

コードを説明していきます

コードの接続

まずコードでは表示されていませんが、0〜9の数字を

@IBAction func numbers(_ sender: UIButton) {
}

のなかにドラッグアンドドロップします。

こちらも同様に+, -, ÷, × をドラッグアンドドロップ。

@IBAction func buttons(_ sender: UIButton) {
}

IBアクションではありません。connect actionです。

tag追加

tagを追加していきます。

0には1を

1には2をつけていき9に10がつけばOK

次は

Cに11

÷に12

と続き

=が16になれば完璧です。

続き

@IBAction func numbers(_ sender: UIButton) {
  // この中が数字をクリックしたときに動く場所
}
@IBAction func buttons(_ sender: UIButton) {
  // この中が数字以外の四則関数をクリックしたときに動く場所
}

あとは全体のコードを見ながら各自コードを解読していってください。

感想

電卓なんか簡単でしょ?って思っていたのですが難しかったです。笑

もっとシンプルなのを作っていき最終的には複雑なものを作っていければいいと思う。

その過程ではアウトプットを忘れずに!

参考

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3