ForEach через несколько TextField, чтобы проверить, пусто или нет в SwiftUI - PullRequest
0 голосов
/ 31 января 2020

У меня небольшие проблемы с выяснением, как я могу проверить, является ли текст пустым в каждом из моих текстовых полей. У меня есть 3 секции текстовых полей, все в VStack, мне нужен только пользовательский ввод из 2/3 секций (я полагаю, переменных), которые вы видите ниже.

Как я могу проверить, в каких двух разделах введенный пользователем текст и получить ли окончательные результаты в разделе, в котором текстовые поля были оставлены пустыми? Я уже поместил все мои переменные TextField String в ленивую переменную.

Теперь я знаю, что мне нужно, чтобы каждый выполнял sh этот или даже более предпочтительный вариант.

Заранее спасибо!

Надеюсь, я хорошо объяснил это и вижу, что это будет возможно в будущем для других, таких как выделение текстового поля, которое было оставлено пустым из разделов 2/3. Это только один пример, но оцените его!

1 Ответ

1 голос
/ 31 января 2020

Вы можете обновить на основании следующих данных:

 @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
        }
    }

   }
...