【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: )を使用して初期値を設定する。
の方法で初期値を設定します。