【发布时间】:2019-10-08 14:58:46
【问题描述】:
我尝试在 SwiftUI 上制作一个计时器,效果很好:
import SwiftUI
import Combine
struct ContentView: View {
let currentTimePublisher = Timer.TimerPublisher(interval: 1.0, runLoop: .main, mode: .default)
.autoconnect()
@State private var currentTime = Date()
var body: some View {
VStack{
Text("Time is:")
Text("\(currentTime)")
}.onReceive(currentTimePublisher) { (date) in
self.currentTime = date
}
}
}
但是,我尝试将 VStack 放在任何可滚动的地方,例如 List 或 ScrollView,但在滚动屏幕时我没有更新。当我不滚动时它工作得很好。
如您所见,我还将 TimerPublisher 放在主线程上,但这并没有改变任何东西。
如何让 SwiftUI 在我滚动/交互时更新时间?
【问题讨论】:
-
请向我们展示您的非工作代码