Bonjour Claude,
Je viens d'essayer de passer autrement, mais la chose ne fonctionne toujours pas.
Alors Merci Beaucoup pour votre aide.
Voici mon code (coupé par rubrique car trop long pour ce post):
//DEBUT:
import SwiftUI
struct ListeArbres: View {
var image : String = ""
@State private var searchText = ""
@State var isOn = false
func test()->Bool {
if isOn == false {
isOn = true
}else{
isOn = false
}
return isOn
}
var Arbres = [
"Aubépine",
"Bouleau",
"Charme",
"Châtaignier",
"Chêne",
//SUITE :
"Tilleul"
]
enum NavigationItem {
case Aubepine
case Bouleau
case Charme
case Chataignier
//SUITE :
case Tilleul
}
@State var navigatedItem: NavigationItem?
var body: some View {
NavigationView {
List (filteredNames, id:\.self) { arbre in
Group {
VStack {
NavigationLink(destination: Aubepine(), tag: NavigationItem.Aubepine, selection: $navigatedItem){EmptyView()}
Button(
action:{
isOn = test()
},
label :{
HStack (spacing: 50){
Image("aubepine fruit")
.resizable()
.scaledToFit()
.frame( height: 70)
.position(x: 40, y: 30)
.padding(.vertical,4)
Text("Aubépine")
.font(.title)
.position(x: -20, y: 30)
}
})
}
VStack {
NavigationLink(destination: Bouleau(), tag: NavigationItem.Bouleau, selection: $navigatedItem){EmptyView()}
Button(
action:{
//SUITE & FIN :
VStack {
NavigationLink(destination: Tilleul(), tag: NavigationItem.Tilleul, selection: $navigatedItem){EmptyView()}
Button(
action:{
isOn = test()
},
label :{
HStack (spacing: 50){
Image("tilleul feuille")
.resizable()
.scaledToFit()
.frame(height: 70)
.position(x: 50, y: 30)
.padding(.vertical,4)
Text("Tilleul")
.font(.title)
.position(x: -20, y: 30)
}
})
}
VStack {
}
.navigationBarTitleDisplayMode(.inline)
.buttonStyle(PlainButtonStyle()
)}
} .searchable(text: $searchText, prompt: "Chercher")
.navigationTitle("Arbres à connaître")
.frame(width: 400)
}
}
var filteredNames: [String] {
if searchText.isEmpty {
return Arbres
}else{
return Arbres.filter {
$0.contains(searchText)
}
}
}
}
struct ListeArbres_Previews: PreviewProvider {
static var previews: some View {
ListeArbres()
}
// Lorsque ma liste est simple (un text sans bouton, ni navigationLink), le filtre de recherche fonctionne correctement. Mais une fois inclus les boutons et la navigation, le filtre de la searchBar ne renvoie plus rien (elle écrit, mais ne filtre plus).
MERCI BEAUCOUP CLAUDE
Christophe