【Swift5】クイズアプリで、難易度別に問題を表示する方法【初心者】

#はじめに
実務未経験で、Swiftを独学で勉強しています。
学んだ事をアウトプットしていきたいと思います。
初学者のため、間違いがあるかも知れません。
その時は、教えていただけると幸いです。

#環境
macOS Catalina10.15.4
Xcode11.7

#やりたい事
「レベル別に問題を表示させる」
クイズアプリを作る時に、難易度別や種類別に問題を作成をしたいと思いました。
しかし、該当する方法が調べてもわからなかったため、まとめる事にしました。

#完成形
![ezgif.com-gif-maker.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683624/01d6c656-ac6d-d21a-0b6f-d244c4ec8f61.gif)


#方法

１、story boardでボタンにtag番号を付ける
![スクリーンショット 2020-10-17 18.01.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683624/461b94c0-e2e6-59cb-e4ad-38e164c1715c.png)
![スクリーンショット 2020-10-17 18.01.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683624/b06d7ee1-7301-25ae-48ab-f2fce223592e.png)

２、tag番号を送る

```OneViewController.swift
  @IBAction func levelBtnAction(sender: UIButton) {
        
        //buttonに設定されたtagを取得
        let number = sender.tag
       //タグをsenderでprepaerへ送る
        self.performSegue(withIdentifier: "nextVC", sender: number)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "nextVC" {
            //遷移先のVCを取得
            if let secondVC = segue.destination as? TwoViewController {
                secondVC.tappedButtonTag = sender as? Int
            }
        }
    }
```

注意：変数TappedButtonTagをTwoViewControllerに作成しておかないと、「secondVC.tappedButtonTag」と記述する時にtappedButtonTagが出てきません。

３、変数TappedButtonTagを準備する


```TwoViewContoroller.swift
 //tagを入れる変数を設定
    var tappedButtonTag: Int?
```

４、tag番号をswitch文で判定をかける

```TwoViewController.swift
   override func viewDidLoad() {
        super.viewDidLoad()

        //タグの値を表示
        print(tappedButtonTag as Any)
        
        switch tappedButtonTag {
        case 0:
//            print("レベル１の問題を表示")
            problemLabel.text = "レベル１の問題を表示"
        case 1:
//            print("レベル２の問題を表示")
            problemLabel.text = "レベル２の問題を表示"
        case 2:
//            print("レベル３の問題を表示")
            problemLabel.text = "レベル３の問題を表示"
        default:
            print("値が設定されていません")
        }
    }
```


以下、コード全文

```OneviewController.swift
import UIKit

class OneViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }
    

    @IBAction func levelBtnAction(sender: UIButton) {
        
        //buttonに設定されたtagを取得
        let number = sender.tag
       //タグをsenderでprepaerへ送る
        self.performSegue(withIdentifier: "nextVC", sender: number)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "nextVC" {
            //遷移先のVCを取得
            if let secondVC = segue.destination as? TwoViewController {
                secondVC.tappedButtonTag = sender as? Int
            }
        }
    }
}
```

```TwoViewController.swift
import UIKit

class TwoViewController: UIViewController {

    @IBOutlet weak var problemLabel: UILabel!
    
    //tagを入れる変数を設定
    var tappedButtonTag: Int?
    
    override func viewDidLoad() {
        super.viewDidLoad()

        //タグの値を表示
        print(tappedButtonTag as Any)
        
        switch tappedButtonTag {
        case 0:
//            print("レベル１の問題を表示")
            problemLabel.text = "レベル１の問題を表示"
        case 1:
//            print("レベル２の問題を表示")
            problemLabel.text = "レベル２の問題を表示"
        case 2:
//            print("レベル３の問題を表示")
            problemLabel.text = "レベル３の問題を表示"
        default:
            print("値が設定されていません")
        }
    }  
}
```

参考サイト
https://teratail.com/questions/161439
https://qiita.com/misakiagata/items/b7f6c2f6c9f988ec38c7