使用@Binding将@AppStorage绑定到视图属性。
问题说明:当将一个带有@AppStorage修饰的属性的视图作为参数传递到另一个视图时,该视图不会更新。
解决方法:通过在视图中使用@Binding将@AppStorage绑定到视图属性,每次更改@AppStorage时都会直接更新视图。
代码示例:
struct ContentView: View { @AppStorage("name") var name: String = "John"
var body: some View {
SecondView(name: $name)
}
}
struct SecondView: View { @Binding var name: String
var body: some View {
VStack {
Text("Hello, \(name)!")
Button("Change name") {
name = "Jane"
}
}
}
}