本文へスキップ
BecomeCoder

Swift(iOSアプリ)コース · 第7章 リストと画面遷移 ― 実アプリの形 · レッスン31

Form ― 設定画面を作る

ブラウザで完結

導入

プロフィール編集、通知設定、環境設定。入力部品を整然と並べた「設定画面」は、Form を使うとiOS標準の見た目で一気に作れます。

説明

Form { ... } は、List に似た入れ物で、入力部品を並べるのに最適化されています。@State と組み合わせて、そのまま動く設定画面になります。

struct ContentView: View {
    @State private var username = ""
    @State private var notify = true
    @State private var volume = 50.0

    var body: some View {
        NavigationStack {
            Form {
                TextField("ユーザー名", text: $username)
                Toggle("通知を受け取る", isOn: $notify)
                Text("音量: \(volume)")
                Slider(value: $volume, in: 0...100)
            }
            .navigationTitle("設定")
        }
    }
}

FormTextFieldToggleSlider を並べるだけで、行ごとに区切られた設定画面ができます。値はすべて @State にバインドされているので、操作すればその場で状態が変わります。第6章の状態管理と、この章の一覧・遷移を組み合わせれば、実用的なアプリ画面がもう作れます。

やってみよう

プレビューの各部品を操作してみましょう。FormStepper("個数: \(...)", value: ...) のような行を足してみるのもおすすめです。

演習

Form に「ダークモード」を切り替える Toggle を1つ足してください(@State private var dark = false を用意)。

ヒント1を見る

@State private var dark = false を宣言します。

ヒント2を見る

Toggle("ダークモード", isOn: $dark)Form に足します。

実際に動かしてみよう

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

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

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