「SwiftUIの@Stateプロパティについて知りたい」
そういう人に向けて、この記事は書かれています。
どうも、ちょげ(@chogetarou)です。
SwiftUIによって、iOSアプリ開発がとっても楽になりました。
その1つの理由として挙げられるのが、@Stateプロパティラッパーです。
今回は、iOSの@Stateプロパティラッパーについて解説します。
概要
@Stateプロパティラッパーは、変数が変更されていないかを監視するための機能です。
iOSのアプリでは、画面に映る数値や文字が変わるというのが今では標準的な動作ですよね。
ここで、質問です。
仮にユーザーが数値や文字を変えたら画面が変わるというのは、どうやってやるのでしょうか。
開発者が画面の番人になって、ユーザーが値を変えたら画面を切り替えるようにすればいいのでしょうか。
コスパが悪いですし、現実的ではないですよね。
そこで、代わりに画面の番人になってくれるのが@Stateプロパティラッパーです。
@Stateプロパティラッパーは、ユーザもしくはアプリが特定の値を変えたら、画面を再描画するという機能を実現してくれます。
画面内に変数の値が表示されているならば、再描画される際には変更後の値が表示されます。
使用法
@Stateプロパティラッパーは、変数の宣言の先頭に@Stateをくっつけることによって使用できます。
@State var wrapper = value
@Stateが付くことによって、変数は番人が見張ってくれている状態になります。
例
実際の使用例を見ていきましょう。

変数countの値が表示されるだけのコードです。
これにボタンを押すたびに値が変化するようにします。

ボタンを押すことで、変数に1が足されます。
普通の変数なら画面が1のままなのですが、@Stateプロパティラッパーを使うことによって

ボタンが押されて、変数の値が変わるのと一緒に画面が再描画されているのが分かります。
まとめ
- @Stateプロパティラッパーによって変数を監視できる
- 監視している変数に変更があった場合は、画面が再描画される
- 監視したい変数の宣言の先頭に@Stateをつける事によって実現できる
オススメの書籍
iOSアプリの基礎が分かりやすくまとめられている名著です。
コメント