我正在尝试将搜索栏放入 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 中并进行检查。当我从选择器视图返回并且搜索栏中有值时,搜索栏值会在主视图中显示一小段时间。然后它会自动显示所选择的项目。
解决此问题的最佳方法是什么,以便在转换回主视图之前清除搜索变量?