我正在用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破解示例。