如何为 `Timer.publish()` 声明变量
How to declare variables for `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()
}
我目前正在使用 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()
}