はじめに
今日はSwiftUIについて勉強していきます。
SwiftUIで@
がついた変数をPropertyWrapper
というらしいですが、その1つに@State
があります。
今回は@State
について基本的な使い方について共有しようと思います。
構文
@State
を頭につけて、あとは普通に変数宣言するだけ
@State var hoge: Bool = false
初期値が必要なので↑のように初期値入れるか、イニシャライザ(init)で渡して初期化するようがあります。
イニシャライザで変数を初期化する方法
他Viewから渡された変数で初期化する場合はState(initialValue: 引数)
とします。
@State var text: String init(str: String) { _text = State(initialValue: str) // text = str これだとエラーになる時がある }
直接代入してもエラーになるときとそうでない時があります。理由は不明。。
TextField/Toggleで使う
中身が動的に変わるViewの引数にBinding<XXXX>
が絶対あります。
その引数に指定する変数は@State
か@Binding
にしないといけません。
例えばTextField
を使う場合はこんな感じで使います。
@State var text: String = "" var body: some View { VStack { TextField("プレースホルダー", text: $text) } }
TextFieldのtext:
に対応する型はBinding<String>
です。
もちろん@State
をついていないとコンパイルエラーになります。
Cannot find '$text' in scope
おわりに
最後まで見ていただきヘペトナス!
読者登録・Twitterのフォローもお願いします。