如何为"Timer.publish()"声明变量



我目前正在使用SwiftUI开发一个应用程序。

我正在尝试制作一个计时器应用程序,我想控制timer.publish((方法,所以我制作了启动和停止计时器的方法。

但我不知道如何为Timer.publish()声明变量,然后代码就不起作用了。。。

如何为Timer.publish()声明变量?


ContentView.swift(*此代码不构建(

import SwiftUI
struct ContentView: View {

@State var timer:Timer! //I don't know how to declare here...
@State var counter = 0

var body: some View {
VStack{
HStack{
Text("RUN")
.onTapGesture {
startTimer()

}
Text("STOP")
.onTapGesture {
stopTimer()
}
}

Text(String(counter))
.padding()
}

.onReceive(timer) { _ in
print("onRecieve")
counter += 1

}
}

func stopTimer() {
self.timer.upstream.connect().cancel()
}

func startTimer() {
self.timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
}
}

TimerControlApp.swift

import SwiftUI
@main
struct TimerControlApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}

Xcode:版本12.0.1

iOS:14.0

生命周期:SwiftUI应用

为了控制启动,计时器的类型应该是Timer.TimerPublisher。这样,您就可以使用.connect()手动启动计时器。

@State var timer: Timer.TimerPublisher = Timer.publish(every: 1, on: .main, in: .common)
func startTimer() {
timer = Timer.publish(every: 1, on: .main, in: .common)
_ = timer.connect()
}
func stopTimer() {
timer.connect().cancel()
}

相关内容

  • 没有找到相关文章

最新更新