web-dev-qa-db-fra.com

Comment afficher une barre de recherche avec swiftui

Le nouveau cadre SWIFTUI ne semble pas fournir une composante barre de recherche intégrée. Devrais-je utiliser un UisearchController et l'envelopper d'une certaine manière, ou devrais-je utiliser un simple champ de texte et mettre à jour les données en fonction de l'entrée TextField?

EDIT: La solution de contournement actuelle consiste à utiliser un TextField comme une barre de recherche. Ça fonctionne très bien, mais il n'a pas l'icône de recherche

enter image description here

import SwiftUI

struct Search : View {
  
  let array = ["John","Lena","Steve","Chris","Catalina"]
  
  @State private var searchText = ""
  
  var body: some View {
      NavigationView{
        List{
            TextField("Type your search",text: $searchText)
                .textFieldStyle(RoundedBorderTextFieldStyle())
            
            ForEach(array.filter{$0.hasPrefix(searchText) || searchText == ""}, id:\.self){searchText in
                Text(searchText)
            }
        }
        .navigationBarTitle(Text("Search"))
      }
  }
}

struct Search_Previews : PreviewProvider {
  static var previews: some View {
    Search()
  }
}

mis à jour pour travailler avec Xcode 11.1

48
Antoine Weber

De nombreux composants Uikit n'ont actuellement pas d'équivalents SWIFTUI. Afin de les utiliser, vous pouvez créer un wrapper comme dans https://developer.apple.com/tatudials/swiftui/creating-and-commining-views .

Fondamentalement, vous établissez une classe SWIFTUI qui est conforme à UIViewrewrevisable et implémente Makeuview et UpdateduView.

2
mginn