0

我认为必须有一种方法可以为部分中的每个文本字段使用修饰符,而不必为每个文本字段键入它们。可以使用 ForEach 或其他我不知道的东西来实现下面示例的结果吗?

            Section() {
                TextField("", text: $text1).keyboardType(.decimalPad).modifier(ClearButton(text: $text1))
                TextField("", text: $text2).keyboardType(.decimalPad).modifier(ClearButton(text: $text2))
                TextField("", text: $text3).keyboardType(.decimalPad).modifier(ClearButton(text: $text3))
                TextField("", text: $text4).modifier(ClearButton(text: $text4))
            }
4

1 回答 1

0

这是可能的方法。使用 Xcode 11.4 / iOS 13.4 测试

struct DemoSectionView: View {
    @State private var texts = Array(repeating: "", count: 4)
    var body: some View {
        Section() {
            ForEach(texts.indices, id: \.self) { i in
                DemoTextField(text: self.$texts[i],
                   keyboard: i == self.texts.count - 1  ? .default : .decimalPad)
            }
        }
    }
}

struct DemoTextField: View {
    @Binding var text: String
    var keyboard: UIKeyboardType = .default

    var body: some View {
        TextField("", text: $text)
           .keyboardType(keyboard)
           .modifier(ClearButton(text: $text))
    }
}
于 2020-06-18T10:28:30.580 回答