iosアプリで1分タイマーを作ってみた

１分タイマーアプリを作ってみる事にしました。
#バージョン
xcode Version 10.2.1 
#制作過程
プロジェクトを立ち上げます。
<img width="491" alt="スクリーンショット 2019-07-30 21.11.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/473106/931f7524-3c5c-5800-4aba-0250355fe0b0.png">
Single View APPを使い、次の画面でProductNameなどの必要情報を記載し進める。
<img width="725" alt="スクリーンショット 2019-07-30 21.15.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/473106/750c7cb5-829a-9a8b-0cbc-3a5a0c5ba743.png">
Main.storyboardにてUILabelを真ん中上に一ヶ所、下部にstart,stop,resetとしてUIButtonを三ヶ所配置する。
<img width="1440" alt="スクリーンショット 2019-07-30 21.23.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/473106/2a956774-4582-c2d6-4501-6d9dac54eb48.png">
viewController.swiftファイルにそれぞれを紐付ける。
<img width="1440" alt="スクリーンショット 2019-07-30 21.50.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/473106/217560d5-8e1d-7f18-3815-d2a12e674f44.png">
各部品に制約をつける。
今回は簡単にAll Views in View ControllerのAdd Missing Constraintsにて一気に行う。
<img width="1440" alt="スクリーンショット 2019-08-01 19.31.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/473106/6bc2a3bb-956e-74dc-0283-ab48a062bf3c.png">
view Controllerにてインスタンスの生成と変数に初期値を代入。

```Swift
//タイマークラスのインスタンスを生成
var timer = Timer() 
//count変数に初期値0を代入   
var count = 0
```
スタートボタンの実装

```Swift
//スタートボタン
@IBAction func timerStartButton(_ sender: Any) {
//invalidateメソッドはオブジェクトからタイマーを削除する
        timer.invalidate()
        timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector:#selector(ViewController.updateTimer),
        userInfo: nil, repeats: true)
 }
```
scheduledTimerメソッド各引数の役割り
>|名前|説明|
|:--|:--|
|timeInterval|ループなら間隔,1度きりなら発動までの秒数|
|target|メソッドを持つオブジェクト|
|selector|実行するメソッド|
|userInfo|オブジェクトに付ける値|
|repeats|繰り返し実行するかどうか|
ストップボタンの実装
	
```Swift
 //ストップボタン
@IBAction func timerStopButton(_ sendr: Any) {
//invalidateメソッドはオブジェクトからタイマーを削除する
        timer.invalidate()
 }
```
リセットボタンの実装

```Swift
//リセットボタン
@IBAction func timerResetButton(_ sender: Any) {
//invalidateメソッドはオブジェクトからタイマーを削除する
        timer.invalidate()
//count変数を0にする
        count = 0
//timerCountLabelのtextプロパティへString型にキャストしたcount変数を代入する（表示させる）
        timerCountLabel.text = String(count)
 } 
``` 
委譲される側の関数

```Swift
//移譲される側のメソッド
@objc func updateTimer() {
//countが60に達するまで1ずつ加算されていく
    if count < 60 {
    count += 1
//timerCountLabelのtextプロパティへString型にキャストしたcount変数を代入する（表示させる）
   timerCountLabel.text = String(count)
}
```
完成

```Swift
import UIKit

class ViewController: UIViewController {
    //Timerクラスのインスタンスを作成
    var timer = Timer()
    //countに初期値を設定
    var count = 0
    override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    }
    //ラベル
    @IBOutlet weak var timerCountLabel: UILabel!
    //スタートボタン
    @IBAction func timerStartButton(_ sender: Any) {
        timer.invalidate()
        timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.updateTimer), userInfo: nil, repeats: true)
    }
    //ストップボタン
    @IBAction func timerStopButton(_ sendr: Any) {
           timer.invalidate()
        }
    //リセットボタン
    @IBAction func timerResetButton(_ sender: Any) {
        timer.invalidate()
        count = 0
        timerCountLabel.text = String(count)
    }
    //移譲される側の関数
    @objc func updateTimer() {
        if count < 60 {
        count += 1
        timerCountLabel.text = String(count)
    }
   
    }
}
```
>参考サイト
[Swift4環境でTimerの使い方と挙動を確認してみた](https://qiita.com/KikurageChan/items/5b33f95cbec9e0d8a05f)