@State var で宣言した変数に、
ビューが表示されるタイミングで、初期値を入れたい。
ということがありました。
import SwiftUI struct ContentView : View { let list:[String] = ["Test01", "Test02", "Test03", "Test04"] @State var testName:String = "" init() { // self.testName = self.list[0] // NG } var timer: Timer { Timer.scheduledTimer(withTimeInterval: 0, repeats: false) {_ in print("init = " + self.list[0]) self.initButton() } } var body: some View { VStack { Text(self.testName) .frame( width: UIScreen.main.bounds.width, height: 50 ) .background(Color.blue) .foregroundColor(Color.white) .padding(10) .onAppear(perform: { // OK _ = self.timer }) Button( action: { self.switchRandom() }, label: { Text("Switch") } ) } } func initButton() { print("initButton") testName = self.list[0] } func switchRandom() { testName = list.randomElement() ?? "" } }
・ init イベントで、値を入れようとしたら、NG。
・text の onAppear イベントで、値を入れようとしたら、NG。
・text の onApper イベントでタイマーをセットして0秒後に値をいれたら、OK。
もっとシンプルなイベントがあると思うのですが、今のところわかりません。