0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

enumを使って難易度を変更するサンプルコード

0
Last updated at Posted at 2021-03-11

enumを使って難易度を管理するサンプルコードです。
次の難易度があるかないかで変更ボタンを表示/非表示切り替えます。

enumInt型のrawValueで管理した方が変更がしやすい。
但し、全てswitch地獄に陥りやすいので、

case間を行き来したいか
・条件を網羅させたいか
・別カテゴリが含まれていないか

などを意識して使う必要がある。
必要に応じてenumではなくprotocolstructを組み合わせたものを使う。

import UIKit

class ViewController: UIViewController {

    private var mode = Mode.Normal

    @IBOutlet weak var modeLabel: UILabel!
    @IBOutlet weak var nextModeButton: UIButton!
    @IBOutlet weak var previousModeButton: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        modeLabel.text = mode.returnTitle()
    }

    @IBAction func didTapNextModeButton(_ sender: Any) {
        mode = mode.nextMode() ?? mode
        modeLabel.text = mode.returnTitle()
        nextModeButton.isHidden = mode.nextMode() == nil
        previousModeButton.isHidden = mode.previousMode() == nil
    }

    @IBAction func didTapPreviousModeButton(_ sender: Any) {
        mode = mode.previousMode() ?? mode
        modeLabel.text = mode.returnTitle()
        nextModeButton.isHidden = mode.nextMode() == nil
        previousModeButton.isHidden = mode.previousMode() == nil
    }
}

enum Mode : Int{

    //難易度を3つ用意
    case Easy
    case Normal
    case Hard

    func nextMode() -> Mode?{
        Mode(rawValue: self.rawValue + 1)
    }

    func previousMode() -> Mode?{
        Mode(rawValue: self.rawValue - 1)
    }

    //難易度毎のタイトルを返す
    func returnTitle() -> String {
        switch self {
        case .Easy:
            return "Easy"

        case .Normal:
            return "Normal"

        case .Hard:
            return "Hard"

        }
    }
}
0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?