По моим предположениям, когда вы впервые вводите UIViewController
, UISearchBar
по умолчанию скрыт, учитывая, что вы используете UISearchController
и получаете к нему доступ с помощью значка поиска или чего-то еще.
В этом случае iOS по умолчанию не скрывает UISearchBar
и (скрывает / показывает его) в зависимости от направления прокрутки в UITableView
, как это решить.
Поскольку мы ничего не можем сделать, чтобы отменить это поведение, но мы можем немного улучшить ситуацию, когда пользователь отменяет записи, мы установили UISearchController
в nil
, чтобы удалить его из UIViewController
икогда пользователь нажимает на значок поиска, мы снова присваиваем ему значение и показываем его.
Примечание. Этот ответ предполагает, что вы реализуете его таким образом, учитывая, что в вопросе не так много контекста и кода.
Давайте проникнем в код.
func prepareSearchController() { //function to setup the SearchBar
// Setup the Search Controller
searchController.searchResultsUpdater = self
searchController.searchBar.delegate = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search Items"
navigationItem.searchController = searchController
definesPresentationContext = true
}
@objc func openSearch() { // when user tap on the search icon
prepareSearchController()
self.navigationItem.searchController?.isActive = true
}
Теперь мы соблюдаем UISearchBarDelegate
для доступа к действию кнопки отмены.
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { // this function is available only in search bar delegate make sure to conform to it .
self.navigationItem.searchController = nil
}