首页 > 解决方案 > 带有自定义初始化的 SwiftUI 视图

问题描述

假设我正在制作一个如下所示的自定义输入元素:

struct CustomInput : View {
    @Binding var text: String
    var name: String

    var body: some View {
        TextField(name, text: $text)
            .modifier(InputModifier())

    }
}

目前,当我实例化这个视图时,我需要将两者textname名称都传递给参数。我希望能够使name参数成为可选参数,如下例所示。

 CustomInput("Some name", $text)

通常我会为此使用 init 方法。但我不确定如何处理@Bindinginit 函数中的属性包装器。

关于如何实现这一目标的任何想法?

标签: swiftswiftui

解决方案


您可以像这样编写初始化程序:

struct CustomInput : View {
    @Binding var text: String
    var name: String

    init(_ name: String, _ text: Binding<String>) {
        self.name = name

        // Beta 3
        // self.$text = text

        // Beta 4
        self._text = text
    }

    var body: some View {
        TextField(name, text: $text)
    }
}

推荐阅读