iPhone UISearchBar view не обновляется сразу? - PullRequest
3 голосов
/ 04 сентября 2010

В настоящее время у меня есть UISearchBar и UIDisplayController, определенные в моем RootViewController как:

- (void)viewDidLoad {
    [super viewDidLoad];

    //Add the search bar
    aSearchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
    [aSearchBar sizeToFit];
    aSearchBar.delegate = self;
    aSearchBar.placeholder = @"Search YouTube...";

    self.tableView.tableHeaderView = aSearchBar;

    searchDC = [[UISearchDisplayController alloc] initWithSearchBar:aSearchBar contentsController:self];

    [self performSelector:@selector(setSearchDisplayController:) withObject:searchDC];

    searchDC.delegate = self;
    searchDC.searchResultsDataSource = self;
    searchDC.searchResultsDelegate = self;

    [aSearchBar release];
    [searchDC release];

}

Когда кнопка поиска срабатывает, это событие выполняется для запуска вызова API:

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
    [videoList removeAllObjects];
    if (searchBar.text.length > 0) {
        NSString *searchCriteria = [searchBar.text stringByReplacingOccurrencesOfString:@" " withString:@"+"];

        YTJAppDelegate *appDelegate=(YTJAppDelegate*)[[UIApplication sharedApplication] delegate];
        [appDelegate searchWithCriteria:searchCriteria];

    }       
}

Данные выбраны правильно. Тем не мение. Он становится видимым только тогда, когда я нажимаю кнопку «Отмена» в поиске.

Как получить представление для правильного обновления в момент обновления источника данных / нажатия кнопки поиска? Есть ли специальный метод SearchDelegate, который мне нужно реализовать?

Ответы [ 2 ]

1 голос
/ 04 сентября 2010

оказывается, что решение было направить делегатов searchDisplayController и источники данных на табличное представление, которое он реализовывал:

searchDC.delegate = self;
searchDC.searchResultsDataSource = self.tableView.dataSource;
searchDC.searchResultsDelegate = self.tableView.delegate;
1 голос
/ 04 сентября 2010

код для связанного табличного представления может быть полезен, но я собираюсь догадаться, что вы не звоните [self.tableView reloadData] после завершения поиска

...