SwiftUI #预览测试数据

问题描述 投票:0回答:1

#Preview 宏让我很沮丧!对我来说显而易见的测试数据无法构建。这是一个精简的示例:-

    import SwiftUI

    struct TestView: View {
        @State private var intValue = 0

        var body: some View {
            TestMenuView(intValue: $intValue)
        }
    }

    #Preview {
        TestView()
    }

    struct TestMenuView: View {
        @Binding var intValue: Int

        var body: some View {
            Text("Value passed in was \($intValue)")
        }
    }

    #Preview {
        TestMenuView(intValue: 1)
    }

但是TestMenuView的#Preview给出了错误:- 无法将“Int”类型的值转换为预期的参数类型“Binding”

swiftui binding preview
1个回答
0
投票

编译器告诉您,您正在尝试使用

Int
类型初始化视图,而不是预期的
Binding<Int>
类型。

您可以通过多种方式解决这个问题。

  1. 用常量值初始化它,如下所示:

    TestMenuView(intValue: .constant(1))

  2. 或者,如果您希望预览能够显示动态值,您可以将预览包装在另一个传递状态值的视图中:

    结构 TestMenuView_Previews: PreviewProvider { 结构 TestMenuViewContainer: 查看 { @State var intValue = 1

        var body: some View {
            TestMenuView(intValue: $intValue)
        }
    }
    
    static var previews: some View {
        TestMenuViewContainer()
    }
    

    }

© www.soinside.com 2019 - 2024. All rights reserved.