SwiftUI @Stateとは

SwiftUIロゴ

1.@Stateの使いどころ

struct(構造体)の中では基本的に値(プロパティ)の変更が出来ないので、値の変更が行われる部分には@Stateを使って対応します。

 @State var testStr: String = ""

値(プロパティ)の例

struct Person {
    // 値 (プロパティ)
    @State var testStr: String = ""
    var name: String = "きんちゃん"
    // 関数(メソッド)
    func intro() {
        print("私は\(name)です。")
    }
}

値の変更は宣言したviewの中でしか出来ないためprivate修飾子を付けるコトが推奨されています。

 @State private var testStr: String = ""

Stateの値にアクセスするには$を付けなければなりません。
上記の例でいうと$testStr

2.サンプル

ContentView.swift

import SwiftUI

struct ContentView: View {
    // @Stateを外したりTextFieldの$testStrから$を外す形ではエラー
    @State private var testStr: String = ""
    
    var body: some View {
        VStack {
            // 入力フォーム
            TextField("文字を入力", text: $testStr)
                // 入力フォームの枠線
                .textFieldStyle(RoundedBorderTextFieldStyle())
                // 余白
                .padding()
            //入力フォームの下に入力文字を出力
            Text(testStr)
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
Categories: SwiftUI