Показать панель поиска без предварительной прокрутки вверх? - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь добавить панель поиска в свой табличный вид, чтобы она могла фильтровать настройки для пользователя. Единственная проблема в том, что он изначально скрыт при первой загрузке представления, что не указывает на его доступность.

Он отображается только после прокрутки вверх .

Я нашел решение, которое работало еще в 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
}
...