我构建了一个搜索页面,其中有一个搜索控制器作为导航项:
func configureSearchBar() {
navigationItem.searchController = searchController
searchController.searchBar.delegate = self
searchController.searchResultsUpdater = self
}
在 searchController 中,我指定了一个 searchResultsController,它只是一个带有青色背景的空 UIViewController atm:
let searchController = UISearchController(searchResultsController: ResultsTableViewController())
用户开始输入后就会显示 searchResultsController,但由于某种原因,searchResultsController 没有占据全屏,即使我已将模式呈现样式设置为全屏:
func updateSearchResults(for searchController: UISearchController) {
guard let text = searchController.searchBar.text else { return }
let resultsController = searchController.searchResultsController as? ResultsTableViewController
resultsController?.modalPresentationStyle = .fullScreen
print(text)
}
应用程序中的外观如下:
如何纠正此问题,以便 searchResultsController 占据整个屏幕,而不像现在一样在搜索栏之间留下间隙?
设置 modalPresentationStyle:在 updateSearchResults(for:) 方法中设置 modalPresentationStyle 并不常见。 modalPresentationStyle 通常在模态呈现视图控制器时设置。如果您打算以特定的呈现样式呈现视图控制器,最好在此方法之外执行此操作,可能是在用户选择搜索结果时。