我想在步进器的值为零时禁用步进器的一半。
我在步进器上尝试了.disabled函数,但它禁用了整个步进器,我只希望禁用步进器的减量部分。
struct StepperLabelView : View {
@ObservedObject var social: Social
var body: some View {
VStack {
Stepper(onIncrement: {
self.social.quantity += 1
socialsInCanvas += [Social(companyName: self.social.companyName)]
}, onDecrement: {
self.social.quantity -= 1
socialsInCanvas.removeLast()
}, label: { Text("") })
.disabled(social.quantity == 0)
}
.padding()
}
}
答案 0 :(得分:2)
Stepper
可以激活每个按钮:
struct ContentView : View {
@State var quantity = 3
var body: some View {
VStack {
Stepper("Count: \(quantity)", value: $quantity, in: 0...Int.max)
}
.padding()
}
}
您可以使用onEditingChanged
参数来添加额外的工作。
您也可以在quantity
上进行观察:
@State var quantity = 3 {
didSet {
if oldValue < quantity {
// Probably + button touched
return
}
if oldValue > quantity {
// Probably - button touched
return
}
if oldValue == quantity {
// Unknown
}
}
}
答案 1 :(得分:-1)
您可以将onDecrement代码包装为条件代码,也可以使用两个按钮自行滚动。
HStack {
Button(
action: { self.item += "+" },
label: { Image(systemName: "plus.circle") }
)
Text(item)
Button(
action: { self.item += "-" },
label: { Image(systemName: "minus.circle") }
)
}
仅在适当时禁用“-”按钮。 plus.square可能是更好的符号,https://sfsymbols.com是比较它们的好地方。