代码之家  ›  专栏  ›  技术社区  ›  Dewan

forEach通过多个TextField验证SwiftUI中是否为空

  •  0
  • Dewan  · 技术社区  · 4 年前

    我很难弄清楚如何检查每个文本字段中的文本是否为空。我有3节的文本字段都在一个VStack,我只需要用户输入的2/3节(变量我猜)你看到下面。

    现在我知道我需要forEach来完成这一点,甚至是For-In会更受欢迎。

    提前谢谢!

    希望我解释得很好,并能看到这是可行的,在未来的其他人,如灰色的文本字段,留下了空的2/3部分。这只是一个例子,但请欣赏!

    0 回复  |  直到 4 年前
        1
  •  1
  •   E.Coms    4 年前

    您可以根据以下内容进行更新:

     @State var array = [String](repeating: "", count: 3)
     @State var array1 = [String](repeating: "", count: 1)
     @State var array2 = [String](repeating: "", count: 3)
     @State  var var1 = true
     @State  var var2 = true
     @State  var var3 = true
    
    
      var body: some View{
      VStack {
        HStack{ TextField("text0", text: $array[0])
                TextField("text0", text: $array[1])
                TextField("text0", text: $array[2])
        }.onReceive(array.publisher) { _ in
    
            self.var1 = self.array.allSatisfy{$0.isEmpty}
            self.check()
          }
        HStack{
           TextField("text1", text: $array1[0])
        }.onReceive(array1.publisher) { _ in
    
            self.var2 = self.array1.allSatisfy{$0.isEmpty}
            self.check()
          }
        HStack{
          TextField("text2", text: $array2[0])
          TextField("text2", text: $array2[1])
           TextField("text2", text: $array2[2])
        }.onReceive(array2.publisher) { _ in
    
            self.var3 = self.array2.allSatisfy{$0.isEmpty}
            self.check()
          }
       }
      }
    
     func check(){
    
        switch ( (var1 ? 1 : 0) | (var2 ? 2: 0) | (var3 ? 4:0)){
            case 0b001: print( "var1", var1)
            case 0b010: print( "var2", var2)
            case 0b100: print( "var3", var3)
            default: return
            }
        }
    
       }