Avatar ·

SwiftUI: 如何实现带有 @Binding 变量的自定义 init

你好!我是 SwiftUI 新手,正在尝试创建一个带有文本输入字段的自定义视图。我需要父视图能够通过 @Binding 传递状态管理。但当我尝试添加自定义 init 时,Xcode 报错说 $text 属性未初始化。这是我的代码:

struct CustomTextField: View {
    @Binding var text: String
    var placeholder: String
    
    // 尝试创建自定义 init
    init(placeholder: String, text: Binding<String>) {
        self.placeholder = placeholder
        self.text = text // 错误:'self' used before all stored properties are initialized
    }
    
    var body: some View {
        TextField(placeholder, text: $text)
            .textFieldStyle(RoundedBorderTextFieldStyle())
    }
}

我明白 @Binding 是一个 property wrapper,但不知道如何在自定义 init 中正确初始化它。