【SwiftUI】ビューの初期イベントで state 変数に値を入れてみる

@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。

もっとシンプルなイベントがあると思うのですが、今のところわかりません。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA