#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”
编译器告诉您,您正在尝试使用
Int
类型初始化视图,而不是预期的 Binding<Int>
类型。
您可以通过多种方式解决这个问题。
用常量值初始化它,如下所示:
TestMenuView(intValue: .constant(1))
或者,如果您希望预览能够显示动态值,您可以将预览包装在另一个传递状态值的视图中:
结构 TestMenuView_Previews: PreviewProvider { 结构 TestMenuViewContainer: 查看 { @State var intValue = 1
var body: some View {
TestMenuView(intValue: $intValue)
}
}
static var previews: some View {
TestMenuViewContainer()
}
}