【SwiftUI】
@Stateプロパティを持つ変数の初期値をinit処理で設定する方法
@Stateの初期値を動的に設定する
投稿日 2022/08/07 更新日 2022/08/07
こんにちは。当サイトの管理者「元木皇天」です。
今回はSwiftUIの@Stateプロパティを持つ変数の初期値をinit処理で設定する方法について解説いたします。
環境
OS:MacOS Big Sur ver11
Swift:バージョン5.5.2
Xcode:バージョン13.2.1
やりたいこと
@Stateプロパティを持つ変数の初期値をinit処理で設定する
@Stateプロパティを持つ変数の初期値をinit処理で設定する
@Stateプロパティを持つ変数 はinit処理内で初期値を設定することが可能です。
init処理内で初期値を設定するには以下の2点に気をつける必要があります。
1. 初期値を設定したい変数名は「”_” + @Stateプロパティを持つ変数名 」で宣言する。
2. State(initialValue: )を使用して初期値を設定する。
実際のサンプルコードを紹介します。
@State private var sample: String init(){ _sample = State(initialValue: "サンプル") }
init内では処理を記載することもできるので、動的に初期値を設定することも可能です。
以下は配列を生成し、動的に初期値を設定する例です。
@State var sample: String init(){ let array: [String] = ["A", "B", "C", "D", "E"] let value = array.randomElement() _sample = State(initialValue: value ?? "nilです") }
実装例
ここでは先ほどの方法で@Stateプロパティを持つ変数の初期値を設定 する実装例をご紹介します。
import SwiftUI struct ContentView: View { @State var sample: String init(){ let array: [String] = ["A", "B", "C", "D", "E"] let value = array.randomElement() _sample = State(initialValue: value ?? "nilです") } var body: some View { Text(sample) } }
実際にコードを書いた感じは以下のようになります。
表示結果
まとめ
@Stateプロパティを持つ変数 に初期値を設定するには
1. init()内で変数名を「”_” + @Stateプロパティを持つ変数名 」で宣言する。
2. State(initialValue: )を使用して初期値を設定する。
の方法で初期値を設定します。