Панель поиска не отображает результаты, пока кнопка отмены не нажата - PullRequest
2 голосов
/ 28 октября 2010

Я реализовал UITableView с панелью поиска (и отображением поиска) - все работает нормально, но результаты таблицы не обновляются, пока не нажата кнопка отмены панели поиска.

Методы делегирования:

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
    // asynchronous request with [self.tableView reloadData] in the connectionDidFinishLoading
    [self getProductData:searchBar.text]; 
 [searchBar resignFirstResponder];
 [self.tableView reloadData];


}

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {

}

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {

}

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {

}

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar  {  
} 

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar {
 return YES;
}

Нужно ли вызывать метод делегата после получения данных с сервера? Или я должен сделать запрос синхронным?

Спасибо


edit: я пытался с синхронным запросом, и он все еще не работает!

Ответы [ 3 ]

4 голосов
/ 01 ноября 2010

Решил эту проблему, добавив этот код в конец моего метода getProductData:

[[[self searchDisplayController] searchResultsTableView] performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
0 голосов
/ 28 октября 2010

Пожалуйста, попробуйте что-то вроде этого:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    [self getProductData:searchText]; 
    [self.tableView reloadData];
}
0 голосов
/ 28 октября 2010

Я думаю, вы должны реализовать:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString

и вернуть ДА

См. TableSearch пример кода

...