当前位置: 首页 > 知识库问答 >
问题:

SwiftUI预览中的绑定< Double >

白泽语
2023-03-14

(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()
    }
}

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

正如在教程中使用的那样,它可以工作,但我后来将视图提取到它自己的html" target="_blank">文件中,并添加了以下预览:

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

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

问题:如何声明绑定

(还有:我如何在问题中恰当地包含尖括号(不要把它们叠起来)?

共有1个答案

汝天宇
2023-03-14

值需要绑定。您可以使用< code >来解决这个问题。常数(0.5)

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

但这仅用于测试。

 类似资料:
  • 如何为我的视图只显示1个预览?现在我对一个视图有问题:ItemView.Swift 在我运行ContentView.Swift的实时预览并添加几个核心数据对象之后,我的ItemView.Swift将显示所有对象和测试数据的预览。有很多对象,有很多预览,这大大减慢了Xcode的速度。 我在代码2中标记了可能导致问题的地方。我认为它不是ForEach就是ItemView_Previews结构。我试过修

  • 这是我的可选装订 所以现在当我尝试调用这个构造函数时: 我得到了这个错误: 绑定

  • 我有一个视图,有时用于浏览数据,有时用于选择数据。 当用于浏览时,它由NavigationLink呈现。 当用于选择数据时,它以模式表的形式显示,并通过将绑定布尔值isPresented设置为false来关闭,因此我可以使用表函数onDismiss。 然而,在浏览模式下,我需要一种方法来跳过初始化isPresent绑定布尔值。正确的方法是view init()上的可选参数,但我尝试的所有内容都会抛

  • 我正在尝试构建一个自定义的< code>NavBar,带有一些可选的< code >视图,比如searchbar(但前提是视图需要显示它)。 基本上,我需要在视图中传递一些带有参数。 下面是一个示例: 我所说的属性是和。但是执行 或 会引发编译错误: 无法将类型“绑定?”的值分配给类型“绑定” 你知道我该如何解决这个问题吗? 还是有更好的方法来做我想做的事?

  • 我目前正在学习SwiftUI,想开发自己的应用程序。我设计了一个和一个,它们应该处理登录背后的所有逻辑。当用户输入错误的用户名/密码时,屏幕上应该会出现一个警报。我用状态变量解决了这个问题。但现在出现了棘手的部分,因为我想将这个变量的绑定传递给中的登录函数。看一下下面的代码: 我现在正在尝试更改登录函数中的错误值: 但我发现了错误 无法赋值:“error”是“let”常量 我认为这是有意义的,因为

  • 我想在foreach内部的模型中传递一个数组的范围。 我重新创建了一个示例: 周围的工作 我发现是传递所有的列表,并在子视图内部执行范围。但我不想这样做,因为数组非常大: