滑块中的自定义步骤集

问题描述

我有一个@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