まずは全体像から
GIFがこちら
全体のデザインがこちら
全体のコード
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) {
// この中が数字以外の四則関数をクリックしたときに動く場所
}
あとは全体のコードを見ながら各自コードを解読していってください。
感想
電卓なんか簡単でしょ?って思っていたのですが難しかったです。笑
もっとシンプルなのを作っていき最終的には複雑なものを作っていければいいと思う。
その過程ではアウトプットを忘れずに!