SwiftUI - SearchBar funktioniert nicht korrekt

Menslo

Mitglied
Themen-Ersteller
Mrz 24, 2020
13
1
Hallo zusammen,
ich lerne gerade programmieren im Selbstlernmodus und habe mir ein App Projekt in SwiftUI vorgenommen. Dort habe ich eine SearchBar erstellt die nicht ordentlich funktioniert.
Die SearchBar soll in einer Liste nach den Informationen suchen, wenn etwas eingetippt wird, erscheint ein Button zum Löschen des Inhalts der Suchleiste. Ebenfalls in der Suchleiste ist ein Button, der einen BarcodeScanner aufruft und den gescannten Code in die Suchleiste einträgt.
Das funktioniert soweit auch alles eigentlich einwandfrei. Wenn ich diese Suchleiste allerdings innerhalb einer Form { } platziere, öffnet sich jedesmal der Scanner mit dem Löschen des Inhalts aus der Suchleiste. Ich verstehe nicht, woran das liegt. Kann mir da jemand weiterhelfen? Hier ist der Code der Suchleiste

Code:
struct SearchBar: View {
    @Binding var searchText: String
    @Binding var isScannerPresented: Bool
    var placeholder: String
    var body: some View {
        HStack {
            TextField(placeholder, text: $searchText)
                .padding(.vertical, 10)
                .padding(.leading, 10)
                .overlay(
                    HStack {
                        Spacer()
                        if !searchText.isEmpty {
                            Button(action: {
                                searchText = ""
                            }) {
                                Image(systemName: "multiply.circle.fill")
                                    .foregroundColor(.gray)
                                    .padding(.trailing, 10)
                            }
                        }
                    }
                )
            Button(action: {
                isScannerPresented = true
            }) {
                Image(systemName: "barcode")
                    .padding(10)
                    .foregroundColor(.yellow)
                    .cornerRadius(8)
            }
            .sheet(isPresented: $isScannerPresented) {
                BarCodeScanner(isbn: Binding($searchText), foundBooks: .constant(nil))
            }
        }
        .background(Color.secondary.opacity(0.1))
        .cornerRadius(10)
        .padding(.horizontal)
    }
}