Metronome SwiftUI,每当@State变量发生变化时,都会更改计时器间隔



我正在用swiftUI 制作节拍器

我有一个连接到滑块的@State变量。

@State private var period: Double
Slider(value: period, in: 0.25...5, step: 0.25)

现在我只有重新启动节拍器才能重置时间间隔。

Button(action: { startStop = !startStop
self.timer = Timer.publish(every: self.period, on: .main, in:.default).autoconnect()
} ){
Text("START/STOP")
}

然而,我想触发";self.timer=timer.publish(……"(。有没有办法在@State变量更改时触发ObservableObject@Published变量?这样我就可以使用".onReceive((";函数触发";self.timer=timer.publish(……">

谢谢

@State值发生更改时,执行代码的最简单方法是将onChange修饰符添加到定义@State的视图的子视图中,例如:

struct ContentView: View {
@State private var period: Double = 0.5
var body: some View {
Slider(value: period, in: 0.25...5, step: 0.25)
.onChange(of: period) { newValue in
// perform your code here
}
}
}

另请参阅苹果的文档和Swift破解示例。

最新更新