Ios 如何在SwiftUI中创建2个计时器?
查看设置: -具有计时器的内容视图,该计时器每秒触发一次以更新标签 -具有计时器的模态,该计时器每秒触发一次以更新不同的标签(在模态中) 问题:为什么模式中的计时器不工作?这是SwiftUI的限制吗?这是对出版商的限制吗?我完全不明白这为什么行不通 请参见下面的代码作为示例Ios 如何在SwiftUI中创建2个计时器?,ios,swift,swiftui,Ios,Swift,Swiftui,查看设置: -具有计时器的内容视图,该计时器每秒触发一次以更新标签 -具有计时器的模态,该计时器每秒触发一次以更新不同的标签(在模态中) 问题:为什么模式中的计时器不工作?这是SwiftUI的限制吗?这是对出版商的限制吗?我完全不明白这为什么行不通 请参见下面的代码作为示例 import SwiftUI struct ContentView: View { @State private var isShowingCounter = false @State var count
import SwiftUI
struct ContentView: View {
@State private var isShowingCounter = false
@State var counter = 0
private let timer = Timer.publish(every: 1, on: .main, in: .default).autoconnect()
var body: some View {
VStack {
Text("count: \(counter)")
.onReceive(timer) { _ in
self.counter += 1
}
Button(action: {
self.isShowingCounter.toggle()
}) {
Text("Test View counter")
}
}
.sheet(isPresented: $isShowingCounter) { TestView() }
}
}
struct TestView: View {
@State var count = 0
private let timer = Timer.publish(every: 1, on: .main, in: .default).autoconnect()
var body: some View {
Text("\(count)")
.onReceive(timer) { _ in
self.count += 1
}
}
}
有趣。似乎在更新时,
ContentView
每隔一秒就会调用TestView()
,因此也会每隔一秒完全重置模式视图的计时器/内容。如果从ContentView
中删除订阅,则TestView
中的计时器将开始工作。不确定如何最好地修复/维护这两个视图的独立状态。@Aunnn确实很令人困惑,因为您希望ContentView中的标签每秒更新一次,但不是模态overtop。。。这可以通过一个单例计时器来解决,但这确实是非常混乱的。。。。。效率低下仍然会发生。。。