SwiftUI Search Bar mit Liste?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Wenn dein Suchergebnis vom Typ [Elementis] sein soll, darfst du natürlich nicht [String] zurückgeben. Hier mal ein angepasstes Beispiel, wie es funktionieren kann:

import SwiftUI

struct ContentView: View {
  @State private var searchText = ""
  private let elements = Elementis.testData
   
  var filteredElements: [Elementis] {
    if searchText.isEmpty {
      return elements
    } else {
      return elements.filter { $0.ename.lowercased().contains(searchText.lowercased()) }
    }
  }
   
  var body: some View {
    NavigationView {
      List{
        ForEach(filteredElements) { elementis in
          HStack{
            NavigationLink(elementis.ename, destination: Text(elementis.ename))
          }
        }
      }
      .searchable(text: $searchText)
      .navigationTitle("Chemie")
    }
  }
}

struct Elementis: Identifiable{
  var id = UUID()
  var order: String
  var ename: String
   
  static let testData: [Self] = [
    Elementis(order: "1", ename: "Wasserstoff"),
    Elementis(order: "2", ename: "Helium"),
    Elementis(order: "3", ename: "Lithium"),
    Elementis(order: "4", ename: "Beryllium"),
    Elementis(order: "5", ename: "Bor"),
  ]
}

Das Suchfeld kommt aber nur, wenn du die Liste nach unten scrollst.

Woher ich das weiß:Berufserfahrung – Entwickle Anwendungen für iOS, iPadOS und macOS beruflich.
PsySkill 
Fragesteller
 09.08.2022, 19:22

Ich werde es gleich mal ausprobieren. Ich kann mich bei dir wirklich nur bedanken für jedes Mal, bei dem du mir an meiner Frustgrenze hier weitergeholfen hast. Ohne dich hätte ich vielleicht sogar schon abgebrochen weil die Erfolgserlebnisse gefehlt hätten ❤️

0