如何使用 swiftui link 两个最小最大滑块 iOS15
How to link two min max sliders with swiftui iOS15
Image: Sliders
我有两个滑块来过滤结果。其中一个滑块设置最小值,另一个设置最大值。过滤器工作正常,除了最小值可以增加到大于最大值的值,最大值可以降低到最小值以下。
我怎样才能 link 这些滑块使最小值不超过最大值并且最大值不低于最小值?
代码如下:
@State private var minimum: Double = 98.0
@State private var maximum: Double = 1000000.0
var filteredProducts: [Product]
var body: some View {
List {
Section(header: Text("Filters")){
DisclosureGroup("Price range") {
Slider(value: $minimum, in: 98...1000000) {
Text("\(minimum)")
} minimumValueLabel: {
Text("min")
} maximumValueLabel: {
Text("\(minimum, specifier: "%.0f")")
}
Slider(value: $maximum, in: 98...1000000) {
Text("\(maximum)")
} minimumValueLabel: {
Text("max")
} maximumValueLabel: {
Text("\(maximum, specifier: "%.0f")")
}
}
}
}
}
var slideresults: [Product] {
if minimum == 0 && maximum == 1000000000.0 {
return filteredProducts
} else {
return filteredProducts.filter {
[=12=].price > minimum &&
[=12=].price < maximum
}
}
}
我看你很久以前就问过了,希望还是能帮到你。
我遇到了同样的问题,我就是这样解决的。 (显示在您的代码上)
@State private var minimum: Double = 98.0
@State private var maximum: Double = 1000000.0
var filteredProducts: [Product]
var body: some View {
List {
Section(header: Text("Filters")){
DisclosureGroup("Price range") {
Slider(value: $minimum, in: 98...maximum) {
Text("\(minimum)")
} minimumValueLabel: {
Text("min")
} maximumValueLabel: {
Text("\(maximum, specifier: "%.0f")")
}
Slider(value: $maximum, in: minimum...1000000) {
Text("\(maximum)")
} minimumValueLabel: {
Text("\(minimum, specifier: "%.0f")
} maximumValueLabel: {
Text("\(maximum, specifier: "%.0f")")
}
}
}
}
}
基本上,为您的最小值滑块提供您的@state 最大值,反之亦然为最大值滑块。并放置相应的标签:最大值标签到最小值滑块,反之亦然。
Image: Sliders
我有两个滑块来过滤结果。其中一个滑块设置最小值,另一个设置最大值。过滤器工作正常,除了最小值可以增加到大于最大值的值,最大值可以降低到最小值以下。
我怎样才能 link 这些滑块使最小值不超过最大值并且最大值不低于最小值?
代码如下:
@State private var minimum: Double = 98.0
@State private var maximum: Double = 1000000.0
var filteredProducts: [Product]
var body: some View {
List {
Section(header: Text("Filters")){
DisclosureGroup("Price range") {
Slider(value: $minimum, in: 98...1000000) {
Text("\(minimum)")
} minimumValueLabel: {
Text("min")
} maximumValueLabel: {
Text("\(minimum, specifier: "%.0f")")
}
Slider(value: $maximum, in: 98...1000000) {
Text("\(maximum)")
} minimumValueLabel: {
Text("max")
} maximumValueLabel: {
Text("\(maximum, specifier: "%.0f")")
}
}
}
}
}
var slideresults: [Product] {
if minimum == 0 && maximum == 1000000000.0 {
return filteredProducts
} else {
return filteredProducts.filter {
[=12=].price > minimum &&
[=12=].price < maximum
}
}
}
我看你很久以前就问过了,希望还是能帮到你。
我遇到了同样的问题,我就是这样解决的。 (显示在您的代码上)
@State private var minimum: Double = 98.0
@State private var maximum: Double = 1000000.0
var filteredProducts: [Product]
var body: some View {
List {
Section(header: Text("Filters")){
DisclosureGroup("Price range") {
Slider(value: $minimum, in: 98...maximum) {
Text("\(minimum)")
} minimumValueLabel: {
Text("min")
} maximumValueLabel: {
Text("\(maximum, specifier: "%.0f")")
}
Slider(value: $maximum, in: minimum...1000000) {
Text("\(maximum)")
} minimumValueLabel: {
Text("\(minimum, specifier: "%.0f")
} maximumValueLabel: {
Text("\(maximum, specifier: "%.0f")")
}
}
}
}
}
基本上,为您的最小值滑块提供您的@state 最大值,反之亦然为最大值滑块。并放置相应的标签:最大值标签到最小值滑块,反之亦然。