swift - 如何创建一个 View ,该 View 接受一个 Binding 并将其传递给 View 中的另一个 Binding - SwiftUI

标签 swift swiftui

我想知道如何将绑定(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/

相关文章:

swiftui - 如何在 TabView SwiftUI 中保存 View 的列表状态

ios - SwiftUI 中的 WKWebView - 用户与网站交互时如何切换 View ?

swift - 在 Swiftui Picker 滚动列表时触发的事件

swift - 使用 Swift 反转双链表

ios - 在 UITableView 单元格滑动中选择 'Delete',但未调用 'commit editingStyle'

ios - NSTextStorage 子类在某些情况下无法处理表情符号字符和更改字体

SwiftUI:用户使用 DocumentPicker 选择文件后显示数组中的文件 url

swiftui - KFImage图像已加载但未显示?

Swift//NSPopUpButton.addingItems() 问题

swift - 将 Swift 结构定义移动到不同的文件会导致构建失败