繁体   English   中英

如何制作一个采用 Binding 并将其传递给视图中的另一个 Binding 的视图 - SwiftUI

[英]How to make a view that takes a Binding and passes it to another Binding in the view - SwiftUI

我想知道如何将绑定变量传递给 Slider 视图

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”类型

调用中的无关参数 label 'wrappedValue:'

无法推断通用参数“V”

但是,我想让它具有该变量的@Binding,因为我将在另一个视图中使用这个视图。

有什么解决办法吗?

具有@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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM