こんにちは
通常のUISearchBar
の実装では、SearchBarがテキストを持たないとき、もとのビューが見え続けます。
ですが、SearchBarがテキストを持たないときでもアクティブになったタイミングでsearchResultsController
を表示したいときがあるかと思います。
検索したところStackOverFlowにジャストな記事(■)がありましたので、学習記録がてら日本語版として書いておきます。
環境
- macOS 10.12 sierra
- Xcode 8.0 (8A218a)
- Swift 3.0
解決法
- UISearchBarを実装しているクラスで、さらに
UISearchControllerDelegate
プロトコルを取り入れます
resultSearchController.delegate = self
-
willPresentSearchController
を実装します。
extension HogeViewController: UISearchControllerDelegate {
func willPresentSearchController(_ searchController: UISearchController) {
DispatchQueue.main.async {
searchController.searchResultsController!.view.isHidden = false
}
}
}
-
didPresentSearchController
を実装します。
func didPresentSearchController(_ searchController: UISearchController) {
searchController.searchResultsController!.view.isHidden = false
}
詳しくは元記事もあわせてご覧ください