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