我想知道如何将绑定变量向下传递到滑块视图
struct TodayItemView: View {
@State var progress = 0.0
var body: some View {
VStack {
Slider(value: $progress,
in: 0...1,
step: 0.25)
}
}
}
如果我将@State更改为@绑定,它会显示很多错误消息,如下所示
无法将“Double”类型的值转换为指定的“Binding”类型
调用中的无关参数标签“wrapedValue:”
无法推断泛型参数“V”
但是,我想让它对该变量具有@Binding,因为我将在另一个视图中使用此视图。
有什么解决办法吗?
具有绑定的视图不能拥有/存储该值。编译器错误来自
=0.0
您需要做的是创建一个存储值的包装器视图(当您想在不传入值的情况下使用它时)
struct TodayItemView: View {
@Binding var progress: Double
var body: some View {
VStack {
Slider(value: $progress,
in: 0...1,
step: 0.25)
}
}
}
struct SelfContainedTodayItemView {
@State var progress: Double = 0.0
var body: some View {
TodayItemView(progress: $progress)
}
}
然后,您可以在未传入绑定的情况下使用SelfContainedTodayItemView
,并在您传入绑定的情况下使用TodayItemView
。