программно использовать UISearchDisplayController - PullRequest
3 голосов
/ 04 декабря 2010

У меня есть приложение, которое асинхронно ищет удаленный API и отображает пользовательский интерфейс с помощью iOS 'UISearchDisplayController.

Для сохраненной функции поиска я пытался программно использовать UISearchDisplayController, чтобы как начать поиск, так и настроить пользовательский интерфейс так, чтобы он был там, где он был раньше. (То есть, я пытаюсь вызвать панель поиска и задать критерий поиска.)

searchTableViewController.searchDisplayController.searchBar.text = mySearchTerm;
//[...]
[searchTableViewController.searchDisplayController setActive:YES animated:YES];
[searchTableViewController performSearch];

Код, который я пробовал до сих пор - выше, похоже, не сработал. Хотя он корректно отображает строку поиска, задает поисковый запрос и выполняет поиск, система, похоже, каким-то образом не распознает его как действительный поиск. Если я использую свои пальцы в окне результатов, чтобы клавиатура исчезла, поисковый запрос сбрасывается сам и результаты исчезают.

ex1 ex2

Помощь оценена. Спасибо!

1 Ответ

0 голосов
/ 14 января 2012

Я столкнулся с той же проблемой.Я решил эту проблему, создав ivar NSString * savedSearchString; и добавив следующие методы в делегат для UISearchDisplayController.

- (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller
{
    // saves search string for next search
    [savedSearchString release];
    savedSearchString = [controller.searchBar.text retain];
    return;
}

- (void) searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller
{
    // shows keyboard and gives text box in searchBar the focus
    [controller.searchBar becomeFirstResponder];

    // shows previous search results
    if ((savedSearchString))
        controller.searchBar.text = savedSearchString;

    return;
}

Добавление строки controller.searchBar.text = savedSearchString; в searchDisplayControllerWillBeginSearch: приведет к появлению поискового термина в UISearchBar, однако таблица результатов не будет перезагружена.

Переход немного груб, если есть предыдущая строка поиска.Если я найду лучшую реализацию, у которой нет грубого перехода, я обновлю свой ответ.

...