本文へスキップ
BecomeCoder

Swift(iOSアプリ)コース · 第6章 状態管理 ― アプリを動かす · レッスン26

Toggle・Slider・Stepper ― いろいろな入力部品

ブラウザで完結

導入

文字入力だけでなく、オン/オフのスイッチ、スライダー、増減ボタン。設定画面でおなじみの部品も、すべて @State とのバインディングで動きます。

説明

Toggle(スイッチ)は isOn: に、Slider(スライダー)と Stepper(増減)は value:$ でバインドします。

struct ContentView: View {
    @State private var isOn = true
    @State private var volume = 50.0
    @State private var quantity = 1

    var body: some View {
        VStack(alignment: .leading, spacing: 24) {
            Toggle("通知を受け取る", isOn: $isOn)

            Text("音量: \(volume)")
            Slider(value: $volume, in: 0...100)

            Stepper("個数: \(quantity)", value: $quantity)
        }
        .padding()
    }
}
  • Toggle("...", isOn: $isOn) … オン/オフ。isOntrue/false で変わる。
  • Slider(value: $volume, in: 0...100) … 0〜100の範囲をなめらかに選ぶ。
  • Stepper("...", value: $quantity) … +/-で1ずつ増減。

どれも共通して「部品を操作 → @Stateが変わる → 表示が追従」という同じしくみです。部品が変わっても考え方は1つ、というのがSwiftUIの学びやすさです。

やってみよう

プレビューのスイッチ・スライダー・ステッパーを操作して、上の表示(音量・個数)が変わるのを確かめましょう。Stepper の初期値 quantity を変えてみるのもよいでしょう。

演習

Toggle の状態 isOn に応じて、if isOn { ... } else { ... } で「オン」「オフ」の文字を出す Text を足してください。

ヒント1を見る

body の中で if isOn { Text("オン") } else { Text("オフ") } と書けます。

ヒント2を見る

スイッチを切り替えると文字が変わります。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

Swift / SwiftUI — ブラウザ内で実行(学習用)

Swiftの教材サブセットを動かす学習用ランナーを読み込みます。ふつうのコードは print の出力を表示し、SwiftUI(struct: View)を書くと右にiPhone風のライブプレビューを描画します(本物のXcode/Swiftコンパイラではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。