SwiftUI Search Bar mit Liste?

1 Antwort

Vom Beitragsersteller 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 
Beitragsersteller
 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 ❤️