SwiftUI如何创建常量绑定? 代码演示

15 min read

在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中的文本不会更改。