【问题标题】:How to make a view that takes a Binding and passes it to another Binding in the view - SwiftUI如何制作一个采用 Binding 并将其传递给视图中的另一个 Binding 的视图 - SwiftUI
【发布时间】:2021-07-04 22:33:46
【问题描述】:

我想知道如何将绑定变量传递给 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”

调用中的无关参数标签“wrappedValue:”

无法推断通用参数“V”

但是,我想让它为那个变量设置@Binding,因为我要在另一个视图中使用这个视图。

有什么解决办法吗?

【问题讨论】:

    标签: swift swiftui


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-18
      • 2021-06-12
      • 2021-08-04
      • 1970-01-01
      • 2019-11-29
      相关资源
      最近更新 更多