在SwiftUI中,您可以使用@State
属性包装器来创建可变绑定,但是如果您想要创建常量绑定,可以使用@Binding
属性包装器。
下面是代码示例:
struct ContentView: View {
@State private var name = "John"
private let message = "Hello, "
var body: some View {
let bindingName = Binding.constant(name) // 创建常量绑定
return VStack {
Text(message + name)
MySubView(name: bindingName)
Button("Change Name") {
name = "Jane"
}
}
}
}
struct MySubView: View {
@Binding var name: String
var body: some View {
Text(name)
}
}
在上面的示例中,我们在ContentView
中定义了一个name
变量和一个message
常量。然后我们将name
变量包装在一个常量绑定中,并将其传递给MySubView
子视图。在MySubView
中,我们将name
绑定到Text
视图中。由于bindingName
是一个常量绑定,因此在更新name
变量时,MySubView
中的文本不会更改。