Ios 如何在SwiftUI中创建2个计时器?

Ios 如何在SwiftUI中创建2个计时器?,ios,swift,swiftui,Ios,Swift,Swiftui,查看设置: -具有计时器的内容视图,该计时器每秒触发一次以更新标签 -具有计时器的模态,该计时器每秒触发一次以更新不同的标签(在模态中) 问题:为什么模式中的计时器不工作?这是SwiftUI的限制吗?这是对出版商的限制吗?我完全不明白这为什么行不通 请参见下面的代码作为示例 import SwiftUI struct ContentView: View { @State private var isShowingCounter = false @State var count

查看设置: -具有计时器的内容视图,该计时器每秒触发一次以更新标签 -具有计时器的模态,该计时器每秒触发一次以更新不同的标签(在模态中)

问题:为什么模式中的计时器不工作?这是SwiftUI的限制吗?这是对出版商的限制吗?我完全不明白这为什么行不通

请参见下面的代码作为示例

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。。。这可以通过一个单例计时器来解决,但这确实是非常混乱的。。。。。效率低下仍然会发生。。。