Отключить Popover от SearchDisplayController
Я запрограммировал SearchBar, но не в построителе интерфейсов b, перетаскивая поиск в tableView. SearchResult был показан в другом TabelView. Поиск отлично работает. Но каждый раз, когда я ищу, он показывает мне этот Поповер SearchResult. Могу ли я удалить этот Popover?
[SetShowsSearchResultsButton self.searchDisplayController.searchBar: NO];
Тоже не работает
вот код
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
[appDelegate.searchSource removeAllObjects];
if (0 == [searchString length]) {
NSLog(@"LEER");
appDelegate.gefunden=NO;
[appDelegate.rootViewController.tableView.tableView reloadData];
[SearchBar1 resignFirstResponder];
}
for (NSArray *myPoi in appDelegate.poiList)
{
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SELF contains[c] %@)", searchString];
BOOL resultName = [predicate evaluateWithObject:[myPoi valueForKey:@"name"]];
if (resultName) {
appDelegate.gefunden = YES;
[appDelegate.searchSource addObject:myPoi];
[appDelegate.rootViewController.tableView.tableView reloadData];
[self.searchDisplayController setActive:NO animated:YES];
[self.SearchBar1 becomeFirstResponder];
}
}
return YES;
}
и в viewdidload
self.searchDisplayController.searchResultsDataSource = appDelegate.rootViewController.tableView.tableView.dataSource;
Спасибо
2 ответа
Решение
В IB попытайтесь установить значения searchResultsDelegate, searchResultsDataSource, searchContentsController вашего SearchDisplayController в "Владелец файлов" и поместить свой код из
- (BOOL)searchDisplayController:(UISearchDisplayController*)controller shouldReloadTableForSearchString:(NSString*)searchString
в
- (void)searchBar:(UISearchBar*)searchBar textDidChange:(NSString*)searchText
Это должно делать свое дело.
Вы можете сделать это, установив контроллер в неактивное состояние после окончания поиска:
- (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller{
[controller setActive:NO animated:YES];
}