[Swift]Picker(ピッカー)でenumを使うには?

SwiftUI

どうも、ちょげ(@chogetarou)です。

Pickerでenum(列挙体)を使う方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

Pickerでenumを使うには、ForEachとプロトコルを使います。

まず、enumにString、CaseIterable、Identifianleを準拠させます。

また、enumには、「id」を追加します。

enum name : String, CaseIterable, Identifiable {
    var id: String{ self.rawValue }
    ・・・
}

次に、ForEachの第1引数にenumのallCasesプロパティを指定します。

あとは、列挙体の値をTextで表示し、tagでenumの値を指定します。

ForEach(name.allCases, id: \.self) { value in
    Text(value.rawValue)
        .tag(value)
}

これでPickerでenumを使うことが出来ます。

使用例

enum Fruits : String, CaseIterable, Identifiable {
    var id: String{ self.rawValue }
    case apple
    case banana
    case grape
}

struct ContentView: View {
    
    @State var fruit = Fruits.apple
    
    var body: some View {
        VStack {
            Picker("Select Fruit", selection: $fruit) {
                ForEach(Fruits.allCases, id: \.self) { value in
                    Text(value.rawValue)
                        .tag(value)
                }
            }
        }
    }
}

コメント

タイトルとURLをコピーしました