ForEach 通过多个 TextField 验证 SwiftUI 中是否为空
ForEach through multiple TextField to verify if empty or not in SwiftUI
我在弄清楚如何检查每个文本字段中的文本是否为空时遇到了一些问题。我在一个 VStack 中有 3 个文本字段部分,我只需要您在下面看到的 2/3 部分(我猜是变量)的用户输入。
如何检查用户输入了文本的哪两个部分,并在文本字段留空的部分中获得最终结果?我已经将所有 TextField String 变量放入惰性变量中。
现在我知道我需要 forEach 来完成这个,甚至 For In 会更受欢迎。
提前致谢!
希望我解释得很好,并且可以看到这在未来对其他人是可行的,例如将 2/3 部分中留空的文本字段变灰。这只是一个例子,但不胜感激!
您可以根据以下内容进行更新:
@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{[=10=].isEmpty}
self.check()
}
HStack{
TextField("text1", text: $array1[0])
}.onReceive(array1.publisher) { _ in
self.var2 = self.array1.allSatisfy{[=10=].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{[=10=].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
}
}
}
我在弄清楚如何检查每个文本字段中的文本是否为空时遇到了一些问题。我在一个 VStack 中有 3 个文本字段部分,我只需要您在下面看到的 2/3 部分(我猜是变量)的用户输入。
如何检查用户输入了文本的哪两个部分,并在文本字段留空的部分中获得最终结果?我已经将所有 TextField String 变量放入惰性变量中。
现在我知道我需要 forEach 来完成这个,甚至 For In 会更受欢迎。
提前致谢!
希望我解释得很好,并且可以看到这在未来对其他人是可行的,例如将 2/3 部分中留空的文本字段变灰。这只是一个例子,但不胜感激!
您可以根据以下内容进行更新:
@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{[=10=].isEmpty}
self.check()
}
HStack{
TextField("text1", text: $array1[0])
}.onReceive(array1.publisher) { _ in
self.var2 = self.array1.allSatisfy{[=10=].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{[=10=].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
}
}
}