Выход из состояния редактирования после выполнения поиска с помощью контроллера поиска - PullRequest
0 голосов
/ 25 октября 2018

Я использую контроллер поиска для реализации раздела поиска в приложении для 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, когда я печатаю.

1 Ответ

0 голосов
/ 25 октября 2018

Нашел ответ.Решение состоит в том, чтобы добавить

searchController.isActive = false
...