我有一个带有变量的ChildView:
@Binding var itemName: String
在这个ChildView中,我有几个按钮可以更改变量的值:
Button(action: {
self.itemName = "different value"
})
我试着像这样使用预览:
struct ChildView_Previews: PreviewProvider {
static var previews: some View {
ChildView(itemName: "test")
}
}
但我得到一个错误:
无法将类型“String”的值转换为预期的参数类型“Binding”
我知道我可以像下面这样使用预览。错误会消失,预览会正常工作,但是... itemName将具有常量值,它现在不会是可变的,在实时预览中不交互:
struct ChildView_Previews: PreviewProvider {
static var previews: some View {
ChildView(itemName: .constant("test"))
}
}
如何在SwiftUI Preview中声明绑定以使其具有交互性?
2条答案
按热度按时间lpwwtiir1#
更新
PreviewProvider
中的@State
变量似乎不会直接更新只读计算属性previews
。解决方案是将@State
变量 Package 在测试支架视图中。然后在previews
属性中使用此测试视图,以便实时预览正确刷新。已在Xcode 11.2.1中测试并运行。odopli942#
如果您需要一个可以在实时预览中更改的值,我喜欢使用这个helper类:
像这样使用它:
这允许您在实时预览中测试绑定更改。