Кнопка отмены в UISearchController

В моем проекте я использую UITableViewController с внутренним UISearchController для фильтрации данных в моем tableView.

У меня нет проблем с фильтрацией данных, но мне нужно указать дату моей tableView перезагрузки, когда я нажимаю кнопку ОТМЕНА UISearchController, но я не могу найти метод делегирования для этого...

Можете ли вы помочь мне понять, как решить эту проблему?


person kAiN    schedule 16.10.2014    source источник


Ответы (3)


Вам нужно установить UISearchController searchBar's delegate. Как только вы это сделаете, добавление метода делегата searchBarCancelButtonClicked: будет вызвано правильно.

self.searchController.searchBar.delegate = self;

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
}
person Gargoyle    schedule 21.10.2014
comment
Было бы неплохо небольшое пояснение! - person gsamaras; 21.10.2014
comment
@G.Samaras Это метод делегата SearchBar ... SearchController напрямую использует делегат панели поиска, поэтому просто вызовите UISearchBarDelegate в заголовке файла и делегируйте панель поиска (self.searchController.searchBar.delegate = self;) в viewDidLoad или другом метод, используемый в файле реализации... Затем вы можете вызвать код внутри метода делегата SearchBar searchBarCancelButtonClicked и внутри указать функцию, которая должна запускать кнопку отмены. - person kAiN; 21.10.2014
comment
@Gargoyle Спасибо за все! - person kAiN; 21.10.2014

Если вы реализуете протокол UISearchResultsUpdating, вы можете знать, что отмена срабатывает, когда active равно false.

func updateSearchResultsForSearchController(searchController: UISearchController) {
    if !searchController.isActive {
        print("Cancelled")
    }
}
person samwize    schedule 19.02.2016

Свифт 5

searchBar.delegate = self
.......

extension YourClass: UISearchBarDelegate {
    func searchBarCancelButtonClicked(_ searchBar: UISearchBar){} 
}
person A. Lebedko    schedule 19.12.2019