Как программно форсировать поиск в UISearchBar?

Как заставить UISearchBar автоматически начать новый поиск (например, нажав кнопку "Поиск")? Есть ли простой способ добиться этого?

9 ответов

Я обнаружил, что мне нужно было активировать UISearchViewController перед тем, как программно изменить значение поля поиска, чтобы UISearchViewController автоматически выполнял поиск:

// Need to set the searchDisplayController to active to 
// make the changes in search text trigger a search.
self.searchDisplayController.active = YES;
self.searchDisplayController.searchBar.text = @"New search string";

Просто сделайте поле ввода поиска первым ответчиком:

[self.searchInputField becomeFirstResponder];

Вы можете заставить ваш searchBar,

Цель C:

[self searchBar:yourSearchBarName textDidChange: yourSearchingString];

Swift 3.0:

self.searchBar(self.yourSearchBarName, textDidChange: yourSearchingString)

Это вызовет ваш SearchBar.

Убедившись, что нужный текст находится внутри панели поиска, вы можете позвонить self.searchBarSearchButtonClicked(searchBar) (передавая в строке поиска), если вы уже реализовали этот метод UISearchBarDelegate searchBarSearchButtonClicked(_ searchBar: UISearchBar)

let searchBar: UISearchBar = /* The Searchbar */
searchBar.delegate?.searchBar?(searchBar, textDidChange: "")
searchBar.text = ""

Да, вам нужно всего лишь сделать неявный вызов searchBarSearchButtonClicked: на ваше UISearchbarDelegate, Посмотрите официальный документ для получения дополнительной информации об этом делегате.

Свифт 5

Если у вас просто есть UISearchBar (не UISearchViewController):

      let searchBar: UISearchBar
searchBar.text = "foo" // Reset the search text
searchBar.becomeFirstResponder() // Select the field and bring up the keyboard

Кажется глупым, но работает, так что это не глупо;)

NSString * forceReload = self.searchDisplayController.searchBar.text;
self.searchDisplayController.searchBar.text = forceReload;

Это сработало - Swift 4

   searchBar.text="Amber"
   self.searchBar(self.searchBar, textDidChange: "Amber")
Другие вопросы по тегам