Guten Morgen,
in habe eine SwiftUI Anwendung, welche einer Übersicht mit Rennstrecken anzeigt entwickelt.
[Blockierte Grafik: https://ibb.co/84r4hCD]
Bei dieser habe ich nun auch eine Suche implementiert, damit man schneller eine bestimmte Strecke finden kann, funktioniert so weit auch.
[Blockierte Grafik: https://ibb.co/yWQ1Swt]
Jetzt möchte ich natürlich auch, dass die Suchergebnisse anklickbar sind, also habe ich diese in einen NavigationLink gepackt.
Sobald ich das aber mache, werden die Suchergebnisse ausgegraut und der Navigation Link funktioniert auch nicht.
[Blockierte Grafik: https://ibb.co/9vHkr4H]
Und so langsam bin ich mit meinem Latein am Ende, vielleicht kennt jemand von euch ja das Problem und weiß wie ich es lösen kann.
Anbei etwas Sourcecode zum Ausprobieren:
Main Klasse:
Alles anzeigen
Datenmodell der Objekte:
Alles anzeigen
Und ein Objekt:
Alles anzeigen
Die NavigationSearch Klasse ist aus Mark van Wijnen's Medium Artikel.
Ich freue mich auf eure Ratschläge
in habe eine SwiftUI Anwendung, welche einer Übersicht mit Rennstrecken anzeigt entwickelt.
[Blockierte Grafik: https://ibb.co/84r4hCD]
Bei dieser habe ich nun auch eine Suche implementiert, damit man schneller eine bestimmte Strecke finden kann, funktioniert so weit auch.
[Blockierte Grafik: https://ibb.co/yWQ1Swt]
Jetzt möchte ich natürlich auch, dass die Suchergebnisse anklickbar sind, also habe ich diese in einen NavigationLink gepackt.
Sobald ich das aber mache, werden die Suchergebnisse ausgegraut und der Navigation Link funktioniert auch nicht.
[Blockierte Grafik: https://ibb.co/9vHkr4H]
Und so langsam bin ich mit meinem Latein am Ende, vielleicht kennt jemand von euch ja das Problem und weiß wie ich es lösen kann.
Anbei etwas Sourcecode zum Ausprobieren:
Main Klasse:
Quellcode
- import SwiftUI
- struct TracksView2: View {
- var tracks: [Track] = tracksData
- @State private var searchText: String = ""
- var filtered : [Track] {
- if searchText.isEmpty {
- return tracks
- } else {
- return tracks.filter({ $0.search(searchText) })
- }
- }
- var body: some View {
- NavigationView {
- NavigationSearch(text: $searchText, searchResultsContent: {
- ForEach(filtered, id: \.id) { track in
- NavigationLink(destination: TrackDetailView(tracks: track)) {
- TrackRowView(track: track)
- }
- }
- })
- } //: NAVIGATION
- }
- }
Datenmodell der Objekte:
Quellcode
- import SwiftUI
- struct Track: Identifiable {
- var id = UUID()
- var title: String
- var headline: String
- var image: String
- var imagebig: String
- var gradientColors: [Color]
- var link: String
- var description: String
- var details: [String]
- func search(_ query: String) -> Bool {
- //let searchable = [title, headline, description] + details
- let searchable = [title]
- return searchable.filter({ $0.contains(query) }).count > 0
- }
- }
Quellcode
- import SwiftUI
- let tracksData: [Track] = [
- Track(
- title: "Spa-Francorchamps",
- headline: "Die Ardennenachterbahn ist für viele die faszinierenste Rennstrecke überhaupt. ",
- image: "road",
- imagebig: "preview",
- gradientColors: [Color("ColorBlueberryLight"), Color("ColorBlueberryDark")],
- link: "https://www.wikipedia.de/",
- description: """
- Bis
- """,
- details: ["7004m","8,50-18,50m", "21","100m"]
- ),
Die NavigationSearch Klasse ist aus Mark van Wijnen's Medium Artikel.
Ich freue mich auf eure Ratschläge