我假设一定有一种方法可以为节中的每个文本字段使用修饰符,而不必为每个文本字段键入修饰符。以下示例的结果可以使用 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))
}
这是可能的方法。与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))
}
}