如何一次为部分中的文本字段实现视图修饰符?

Posted

技术标签:

【中文标题】如何一次为部分中的文本字段实现视图修饰符?【英文标题】:How to implement view modifiers for text fields in a section at once? 【发布时间】:2020-06-18 09:46:05 【问题描述】:

我认为必须有一种方法可以为部分中的每个文本字段使用修饰符,而不必为每个文本字段键入它们。可以使用 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))
    

【讨论】:

以上是关于如何一次为部分中的文本字段实现视图修饰符?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:超过 4 个组合的文本视图不能与视图修饰符一起使用

SwiftUI-自定义修饰符

SwiftUI:如何仅将修饰符应用于特定元素?

SwiftUI:是不是存在修饰符来突出显示 Text() 视图的子字符串?

什么是修饰符?它有什么作用?举例说明

如何:使用条件自定义背景视图作为背景修饰符?