我想知道如何将绑定(bind)变量传递给 slider View
struct TodayItemView: View {
@State var progress = 0.0
var body: some View {
VStack {
Slider(value: $progress,
in: 0...1,
step: 0.25)
}
}
}
如果我将@State更改为@Binding,它会显示很多错误消息,如下所示
无法将“Double”类型的值转换为指定类型“Binding”
调用中存在无关参数标签“wrappedValue:”
无法推断通用参数“V”
但是,我想让它为该变量添加 @Binding,因为我将在另一个 View 中使用此 View 。
有什么解决办法吗?
最佳答案
具有@Binding
的 View 无法拥有/存储该值。编译器错误来自 = 0.0
您需要做的是创建一个存储值的包装 View (当您想在不传入值的情况下使用它时)
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)
}
}
然后,如果您没有传入绑定(bind),则可以使用 SelfContainedTodayItemView
;如果您传入绑定(bind),则可以使用 TodayItemView
。
关于swift - 如何创建一个 View ,该 View 接受一个 Binding 并将其传递给 View 中的另一个 Binding - SwiftUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67014435/