【问题标题】:Binding<Double> in SwiftUI previewSwiftUI 预览中的 Binding<Double>
【发布时间】:2019-08-10 09:32:48
【问题描述】:

(macOS 10.15 beta 和 Xcode 11 beta 5)

我正在学习的 SwiftUI 教程 (https://www.raywenderlich.com/3715234-swiftui-getting-started#toc-anchor-005) 包含以下视图:

struct ColorSliderView: View {

    @Binding var value: Double
    let textColor: Color

    var body: some View {
        HStack {
            Text("0").foregroundColor(textColor)
            Slider(value: $value, in: 0.0...1.0)
            Text("255").foregroundColor(textColor)
        }.padding()
    }
}

视图与另一个视图在同一个文件中声明,并且可以作为该视图的组件进行预览。

在教程中使用它可以工作,但我后来将视图提取到它自己的文件并添加了以下预览:

#if DEBUG
struct ColorSliderView_Previews: PreviewProvider {
    static var previews: some View {
        return ColorSliderView(value: 0.5, textColor: .red)
    }
}
#endif

这会引发错误“无法将 'Double' 类型的值转换为预期的参数类型 'Binding>'”。

问题:如何声明一个值为0.5的Binding>用于预览?

(另外:如何正确地在问题中包含尖括号(不加倍)?

【问题讨论】:

    标签: swift binding swiftui


    【解决方案1】:

    value 需要一个绑定。您可以使用.constant(0.5) 解决此问题

    #if DEBUG
    struct ColorSliderView_Previews: PreviewProvider {
        static var previews: some View {
           ColorSliderView(value: .constant(0.5), textColor: .red)
        }
    }
    #endif
    

    但这只是用于测试。

    【讨论】:

    • 完美。这解决了预览问题。很明显,SwiftUI 不仅仅是声明 UI 组件。
    • 是的,它每周都在变化,从一个测试版到下一个测试版:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    相关资源
    最近更新 更多