【发布时间】:2019-10-22 20:22:31
【问题描述】:
我有 UISearchController,它是为 SwiftUI 制作的 UIViewControllerRepresentable,如下:
struct SearchViewController<Content: View>: UIViewControllerRepresentable {
var content: () -> Content
let searchResultsView = SearchResultsView()
init(@ViewBuilder content: @escaping () -> Content) {
self.content = content
}
func makeUIViewController(context: Context) -> UINavigationController {
let rootViewController = UIHostingController(rootView: content())
let navigationController = UINavigationController(rootViewController: rootViewController)
let searchResultsController = UIHostingController(rootView: searchResultsView)
// Set nav properties
navigationController.navigationBar.prefersLargeTitles = true
navigationController.definesPresentationContext = true
// Create search controller
let searchController = UISearchController(searchResultsController: searchResultsController)
searchController.searchBar.autocapitalizationType = .none
searchController.delegate = context.coordinator
searchController.searchBar.delegate = context.coordinator // Monitor when the search button is tapped.
// Create default view
rootViewController.navigationItem.searchController = searchController
rootViewController.title = "Search"
return navigationController
}
func updateUIViewController(_ navigationController: UINavigationController, context: UIViewControllerRepresentableContext<SearchViewController>) {
//
}
}
这有效,并在用户搜索时显示searchResultsController。但是,searchResultsController 似乎不知道它是导航上下文/堆栈,因此我无法从searchResultsController 中的列表视图导航。
是否可以将其结构化为允许从 searchResultsController 导航,或者这是当前 SwiftUI 的限制。
非常感谢任何建议!
【问题讨论】:
标签: swift swiftui ios13 uisearchcontroller