问题描述
我有一个@StateObject 滑块。它设置为滑动 1...5 步 1。 我需要自定义步骤 [1,2,5,10,20] 而不是步骤 1。
我有一个设置,其中我将滑块用作自定义步骤数组的数组索引。这是工作。但它是生涩的。单张幻灯片注册幻灯片值十几次,使我的数组在整个过程中被拾取了十几次。我如何才能使自定义步骤顺畅。
我可以在应用程序内进行调整,但如果 Slider 提供确切的数字,应用程序的逻辑就会变得更加清晰。少翻译,理清逻辑。
Slider(value: $tSlider,in: 1...5,step: 1)
// How can I make above like below
Slider(value: $tSlider,step: [1,20]
// What I have currently
@Published var tSteps:[Int] = [1,20]
@Published var tSlider: Double = 1
var tScale: Int { return tlSteps[Int(tlSlider)-1] }
解决方法
在 Slider 上设置步长是个坏主意。步进器是正确的选择。
Stepper("Year Scale",onIncrement: {
switch tVM.tlScale {
case 1: self.tlScale = 2
case 2: self.tlScale = 5
case 5: self.tlScale = 10
case 10: self.tlScale = 20
default: self.tlScale = 20
},onDecrement: {
switch tVM.tlScale {
case 20: self.tlScale = 10
case 10: self.tlScale = 5
case 5: self.tlScale = 2
case 2: self.tlScale = 1
default: self.tlScale = 1
}
})
指的是:在此处发布和 Skipjakk 的回答。 Strange Behavior of Stepper in SwiftUI