Я пытаюсь добавить панель поиска в свой табличный вид, чтобы она могла фильтровать настройки для пользователя. Единственная проблема в том, что он изначально скрыт при первой загрузке представления, что не указывает на его доступность.
Он отображается только после прокрутки вверх .
Я нашел решение, которое работало еще в iOS 11: { ссылка }. К сожалению, похоже, что эта реализация довольно глючная в iOS 13 и, похоже, больше не работает и все еще отображается после прокрутки.
Для справки это код, который у меня есть с глючная реализация:
class SelectSettingViewController : UITableViewController {
weak var delegate: SelectSettingDelegate?
var settings: [String] = []
var filteredSettings: [String] = []
let searchController = UISearchController(searchResultsController: nil)
var isSearchBarEmpty: Bool {
return searchController.searchBar.text?.isEmpty ?? true
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// 1
searchController.searchResultsUpdater = self
// 2
searchController.obscuresBackgroundDuringPresentation = false
// 3
searchController.searchBar.placeholder = "Search settings"
// 4
navigationItem.searchController = searchController
// 5
definesPresentationContext = true
navigationItem.hidesSearchBarWhenScrolling = false
if let indexPath = tableView.indexPathForSelectedRow {
tableView.deselectRow(at: indexPath, animated: true)
}
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
navigationItem.hidesSearchBarWhenScrolling = true
}