SwiftUI初心者がTimerを使えるようになるまでの道のりを簡単にメモしておきます。
とりあえず以下を参考にしています。
ContentView.swiftに追加
とりあえず、最初に生成されるテキスト(Hello, world!)部分に時刻を表示し、1秒ごとに更新するようにしました。
Timer.publish(every: 1, on: .main, in: .common).autoconnect()
を使うことにします。
上記だと、1秒毎に、mainスレッドで、他のイベント実行中でも実行する、という設定になるはずです。
everyで設定した間隔でTimerが出力を行います。
Timerからの出力は、onReceiveで受け取っています。
最初のパラメータで出力元(publisher)を指定していて、2番目のパラメータで受け取った出力を使って実行するfunctionを指定しています。
Contentview.swift
import SwiftUI
struct ContentView: View {
var counter: Int = 0
@State var labeltext: String = "Hello, world!"
let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
var body: some View {
Text(labeltext)
.padding()
.onReceive(timer, perform: { time in
labeltext = "\(time)"
})
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}