У меня есть UIViewController
, который я открываю, представляя его. В нем всего лишь UITableView
и UISearchController
, которые:
let searchController = UISearchController(searchResultsController: nil)
if #available(iOS 11.0, *) {
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false
definesPresentationContext = true
}
Работает хорошо. Я могу фильтровать UITableView
каждый раз, когда пользователь обновляет поле UISearchBar
.
Моя func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
функция выглядит так:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
dismiss(animated: true, completion: nil)
}
При первом выборе строки после фильтрации UItableView
(когда фокус UISearchBar) вызывается мой func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
, но dismiss(animated: true, completion: nil)
не работает. Это просто resignFristResponder()
UISearchBar
.
Затем, если снова выбрать ячейку, теперь, когда UISearchBar
больше не фокусируется, dismiss(animated: true, completion: nil)
работает.
Так что я должен дважды выбрать ячейку, чтобы увидеть, что мой UIViewController
отклонен.
Что с этим не так?