timer - SwiftUI Timer 取消后重启
问题描述
我仍在尝试计时器,这也有效。定时器在一定时间后退出。但是我现在如何重新启动它?我很感激任何帮助。我怀疑.autoconnect()。但我真的不明白。
import SwiftUI
struct ContentView: View {
@State private var timerHold = false
@State var waitingTimerCount = 0
let waiting = ["A","B","C",]
let waitingTimer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
var body: some View {
VStack {
Button(action: {
self.timerHold = true
}) { Text("Button") }
if timerHold == true {
Text(verbatim: waiting[waitingTimerCount])
.onReceive(waitingTimer) { timer in
self.waitingTimerCount = (self.waitingTimerCount + 1) % self.waiting.count
if self.waitingTimerCount == 3 {
self.timerHold = false
self.waitingTimerCount = 0
self.waitingTimer.upstream.connect().cancel()
}
}
}
}
}
}
//??
// self.waitingTimer.upstream.autoconnect()
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
解决方案
游乐场中的自动连接计时器
import PlaygroundSupport
import Combine
import Foundation
PlaygroundPage.current.needsIndefiniteExecution = true
var cancellable: AnyCancellable?
// start automatically
cancellable = Timer.publish(every: 1, on: .main, in: .default)
.autoconnect()
.sink {
print($0)
}
印刷
...
2020-02-24 02:22:20 +0000
2020-02-24 02:22:21 +0000
2020-02-24 02:22:22 +0000
2020-02-24 02:22:23 +0000
2020-02-24 02:22:24 +0000
2020-02-24 02:22:25 +0000
2020-02-24 02:22:26 +0000
...
手动启动/停止计时器
let timerPublisher = Timer.publish(every: 1.0, on: RunLoop.main, in: .default)
cancellable = timerPublisher
.sink {
print($0)
}
/// ...
// start publishing time
let cancellableTimerPublisher = timerPublisher.connect()
// stop publishing time
cancellableTimerPublisher.cancel()
推荐阅读
- ios - Is it possible to use AKAmplitudeTracker on AKAudioPlayer and measure the amplitude changes?
- vb.net - 命令行在命令提示符下有效,但在 VB.NET 中无效
- angular - 错误:找不到“AppModule”角度的 NgModule 元数据
- api - 安装Kong后无法访问8000端口
- c - RLE算法应该压缩c中的字节
- mysql - 如何在 Cakephp 3 的单个查询中更新具有不同条件的多行?
- hyperledger-fabric - 在 v0.19 或更高版本安装 composer-cli
- laravel - 在查询生成器中使用时分页显示错误
- php - Laravel Eloquent 3 查询合二为一
- c++ - C++ 模板:没有匹配的调用函数