离开选择器视图时清除 NavigationLink 样式选择器的搜索栏

问题描述 投票:0回答:0

我正在尝试将搜索栏放入 SwiftUI NavigationLink 样式选择器中。

struct Minimal: View {
    @State private var selected = "1"
    @State private var search = ""
    @State private var options = ["1","2","3","4","5"]
    
    var body: some View {
        NavigationStack {
            Form {
                Picker(selection: $selected, label: Text("Selection")) {
                    HStack {
                        TextField("Search", text: $search).onDisappear {
                            search = ""
                        }
                    }
                    ForEach(options.filter({ element in
                        element.contains(search) || search == ""
                    }), id: \.self) { element in
                        Text(element).tag(element)
                    }
                }.pickerStyle(.navigationLink)
            }
        }
    }
}

这就是我所拥有的。我举了一个最小的例子,这样每个人都可以很容易地投入到 xcode 中并进行检查。当我从选择器视图返回并且搜索栏中有值时,搜索栏值会在主视图中显示一小段时间。然后它会自动显示所选择的项目。

解决此问题的最佳方法是什么,以便在转换回主视图之前清除搜索变量?

swift swiftui picker
© www.soinside.com 2019 - 2024. All rights reserved.