我想在SwiftUI 2.0的选择器中添加一个搜索栏。下面的演示代码实现了这一点,但是搜索栏是滚动列表的一部分,而不是在用户浏览列表时固定在顶部。我该如何改变这个呢?
import SwiftUI
import UIKit
struct ContentView: View {
@State private var selection = 0
@State private var searchText = ""
var body: some View {
NavigationView {
Form {
Picker(selection: $selection, label: Text("Picker")) {
SearchBar(text: $searchText, placeholder: "Search")
ForEach(1 ..< 21) { index in
Text(String(index)).tag(index)
}
}
}
}
}
}
struct SearchBar: UIViewRepresentable {
@Binding var text: String
var placeholder: String
func makeUIView(context: UIViewRepresentableContext<SearchBar>) -> UISearchBar {
let searchBar = UISearchBar(frame: .zero)
searchBar.delegate = context.coordinator
searchBar.placeholder = placeholder
searchBar.autocapitalizationType = .none
searchBar.searchBarStyle = .minimal
return searchBar
}
func updateUIView(_ uiView: UISearchBar, context: UIViewRepresentableContext<SearchBar>) {
uiView.text = text
}
func makeCoordinator() -> SearchBar.Coordinator {
return Coordinator(text: $text)
}
class Coordinator: NSObject, UISearchBarDelegate {
@Binding var text: String
init(text: Binding<String>) {
_text = text
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
text = searchText
}
}
}