提问者:小点点

如何在视图-SwiftUI中创建接受绑定并将其传递给另一个绑定的视图


我想知道如何将绑定变量向下传递到滑块视图

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,因为我将在另一个视图中使用此视图。

有什么解决办法吗?


共1个答案

匿名用户

具有绑定的视图不能拥有/存储该值。编译器错误来自=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