我想使用 onIncrement 和 onDecrement 在手动(非绑定)模式下使用步进视图。当我尝试实现下限和上限时,会出现奇怪的行为,例如。年龄值不低于 1 或高于 10。
如果您尝试以下代码,则可以在其值已为“1”后按两次“-”。它并没有像预期的那样低于 1,但是在再按两次之后,“-”按钮突然被禁用。如果您随后按“+”,则不会发生任何事情。仅在再按 2 次“+”后,计数器才会按预期做出反应并变为 2。
这是一个错误吗?
struct StepperTest: View {
@State private var age = 5
var body: some View {
VStack {
Stepper("Enter your age", onIncrement: {
if self.age < 10 {
self.age += 1
print("Adding to age")
}
}, onDecrement: {
guard self.age > 1 else { return }
self.age -= 1
print("Subtracting from age")
})
Text("Your age is \(age)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想这里有解释:
///如果尝试增加 ///将不会有任何效果,
onIncrement则将被初始化。同样,如果尝试递减没有效果, 则 ///将被初始化为。nilvalueonDecrementnilvalue
如果你试试
Stepper("Enter your age", onIncrement: {
print("Adding to age")
}, onDecrement: {
print("Subtracting from age")
})
Run Code Online (Sandbox Code Playgroud)
...您会看到步进器进入相同的状态,正如您所描述的,因此Apple跟踪步进器视图的重建,如果用户对步进器的操作没有启动重建(即没有效果),它会自行禁用。
另一个问题是为什么不立即...