Как сразу реализовать модификаторы вида для текстовых полей в разделе? - PullRequest
0 голосов
/ 18 июня 2020

Я предполагаю, что должен быть способ использовать модификаторы для каждого текстового поля в разделе без необходимости вводить их для каждого текстового поля. Можно ли добиться результата из приведенного ниже примера с помощью 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))
            }

1 Ответ

0 голосов
/ 18 июня 2020

Вот возможный подход. Протестировано с 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))
    }
}
...