У меня есть UISearchController, который был сделан UIViewControllerRepresentable
для SwiftUI, следующим образом:
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.
Любой совет очень ценится!