Bonsoir à tous les codeurs, je n’arrive pas à sortir de la searchBar une fois que le focus est activé par une recherche pour illustrer mon propos un petit exemple une liste de prénoms avec une recherche, dans le bouton sous la liste je souhaite retirer le focus de la searchBar
import SwiftUI
struct ContentView: View {
@State private var stexteRecherche = ""
let listPrenoms = ["Philippe", "Rémy", "Nathalie", "Délphine"]
var body: some View {
NavigationStack {
List(filtreNoms, id: \.self) { prenom in
Text(prenom)
}
.searchable(text: $stexteRecherche, prompt: "rechercher noms")
.navigationTitle("Recherche")
//ExtractedView()
Button(action: {
stexteRecherche = ""
// souhaite sortir de la recherche
}) {
Text("Quitter recherche")
}
}
}
var filtreNoms: [String] {
if stexteRecherche.isEmpty {
return listPrenoms
} else {
return listPrenoms.filter { $0.contains(stexteRecherche) }
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Faut-il créer un textefield caché et activer le focus dessus ?
J’ai même créer une deuxième version pour utiliser le dismissSearch sans plus de succès.
import SwiftUI
struct ContentView: View {
@State private var stexteRecherche = ""
@State private var montrerFenetre:Bool = false
@Environment(\.dismissSearch) private var dismissSearch
let lesNoms = ["Philippe", "Rémy", "Nathalie", "Délphine"]
var body: some View {
NavigationStack {
List(filtreNoms, id: \.self) { prenom in
Text(prenom)
}
.searchable(text: $stexteRecherche, prompt: "rechercher noms")
.navigationTitle("Recherche")
//ExtractedView()
Button(action: {
self.montrerFenetre.toggle()
}) {
Text("Ouvrir fenetre")
}.sheet(isPresented: $montrerFenetre) {
QuitterRecherche(dismissSearch: dismissSearch)
.presentationDetents([.fraction(0.30)])
}
}
}
var filtreNoms: [String] {
if stexteRecherche.isEmpty {
return lesNoms
} else {
return lesNoms.filter { $0.contains(stexteRecherche) }
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct QuitterRecherche: View {
//@Environment(\.dismissSearch) private var dismissSearch
var dismissSearch: DismissSearchAction
@Environment(\.dismiss) private var dismiss
var body: some View {
Button(action: {
dismiss()
dismissSearch()
}) {
Text("Quitter la recherche")
}
}
}
Je viens de modifier mon code exemple n°2 mais cela ne fonctionne toujours pas. !
Merci des retours !