簡體   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