Я использую контроллер поиска для реализации раздела поиска в приложении для iOS.Я использую iOS 11 и xCode 10.
Моя сцена - это контроллер табличного представления.Я включил панель поиска программно со следующим кодом:
override func viewDidLoad() {
super.viewDidLoad()
let searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.delegate = self
definesPresentationContext = true
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false
}
Я также включила расширение делегата UISearchBar:
extension SearchTableViewController: UISearchBarDelegate {
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
searchBar.resignFirstResponder()
tableView.reloadData()
episodeResultsArray = []
let searchTerm = searchBar.text!
let escapedSearchTerm = searchTerm.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)!
performSearch(forTerm: escapedSearchTerm)
}
}
Функция executeSearch подключается к базе данных через AlamoFire и возвращаетрезультаты, которые затем отображаются в табличном представлении.
Когда я запускаю приложение, таблица выглядит пустой (как и должно быть изначально).Когда я нажимаю на панель поиска, она переходит в состояние редактирования (панель навигации сворачивается, панель поиска остается наверху, появляется кнопка «Отмена», а прозрачный серый прямоугольник закрывает остальную часть экрана.
Когда я что-то ищу, результаты успешно отображаются в таблице. Однако, хотя результаты видны, я все еще остаюсь в состоянии редактирования для панели поиска. Мне нужно нажать на полупрозрачное поле, чтобы выйти из состояния редактирования итолько тогда я смогу прокрутить результаты.
Как выйти из режима редактирования после нажатия кнопки «Поиск», чтобы иметь возможность прокручивать таблицу, как только получу результаты?
Я пытался использовать searchBar.resignFirstResponder (), но это только отклоняет клавиатуру. Я также пытался
searchBar.endEditing(true)
, но хотя панель поиска теряет фокус, я все еще в состоянии редактирования.
Просто чтобы уточнить, мне нужно, чтобы это работало как поиск с нуля, а не как фильтр, то есть не просто показывая подмножество results, когда я печатаю.