我正在学习SwiftUI并尝试创建一个简单的待办事项列表,但我无法理解为什么@Binding
属性不更新我的预览。
代码如下所示。
import SwiftUI
struct TodoRow: View {
@Binding var todo: Todo
var body: some View {
HStack {
Button(action: {
todo.completed.toggle()
}, label: {
Image(systemName: todo.completed ? "checkmark.square" : "square")
})
.buttonStyle(.plain)
Text(todo.title)
.strikethrough(todo.completed)
}
}
}
struct TodoRow_Previews: PreviewProvider {
static var previews: some View {
TodoRow(todo: .constant(Todo.sampleData[0]))
}
}
当我点击方形按钮时,预览没有更新,但应用程序工作正常。我是否使用错误?
编辑:即使没有.constant(#),预览也不起作用。
struct TodoRow_Previews: PreviewProvider {
@State private static var todo = Todo.sampleData[0]
static var previews: some View {
TodoRow(todo: $todo)
}
}
1条答案
按热度按时间b4wnujal1#
在文章Testing SwiftUI Bindings in Xcode Previews中找到了解决方案。
为了更改预览,您必须创建一个容器视图来保存状态并 Package 您正在处理的视图。
在我的情况下,我最终所做的是改变我的预览如下。