Je suis implémentant un Ceci fonctionne lorsque je commence à entrer des valeurs dans la barre de recherche. p> UisearchDisplayController Code> et je voudrais remplir le
SearchResultTableView CODE> avec le contenu de la tableView (non filtré) Droit sur le chargement - avant la saisie du texte.
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller {
self.isSearching = YES;
//tell the searchDisplayTableView to show here!
[controller.searchBar setShowsCancelButton:YES animated:YES];
}
- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller {
self.isSearching = NO;
[controller.searchBar setShowsCancelButton:NO animated:YES];
}
4 Réponses :
Vous devez recharger votre vue sur la table à l'aide du résultat filtré lors de la recherche.
Dans cette méthode, juste une vue de table d'appel et modifie votre numéro J'espère que ça va vous aider. P> p> ReloadData code>:
convectiveViewView code> méthode comme: p>
Bonjour Midhun, merci pour votre commentaire mais cela ne fonctionne pas bien de cette façon. Lorsque j'active la recherche, le SearchDisplayController ajuste la visualisation de la table (bien que nous voyions toujours le contenu mais ne peut pas le contrôler). Lorsque le texte est entré dans la barre de recherche, le contenu de SearchDisplayTableView est chargé avec le contenu (filtré ou non, ce que je peux contrôler) le contenu, je veux montrer.
@Ronny: Lorsque vous commencez à taper la vue Table de la table, il est possible de taper une seule lettre, la vue de la table est affichée à l'état précédent (non daté). Je pense que c'est votre problème, ai-je raison?
@Ronny: Avez-vous toujours le problème?
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { // Remove temporary table view [_tempRecentSearchTableView removeFromSuperview]; }
Vous savez si la barre de recherche est mise au point.
-(void)filter:(NSString*)text { _filteredData = [[NSMutableArray alloc] init]; NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Entidad" inManagedObjectContext:self.managedObjectContext]; [fetchRequest setEntity:entity]; NSSortDescriptor* sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"titulo" ascending:YES]; NSArray* sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; [fetchRequest setSortDescriptors:sortDescriptors]; if(text.length > 0) { NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(titulo CONTAINS[c] %@)", text]; [fetchRequest setPredicate:predicate]; } NSError *error; NSArray* loadedEntities = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; _filteredData = [[NSMutableArray alloc] initWithArray:loadedEntities]; NSLog(@"%@", _filteredData); [self.tableView reloadData]; } -(void)searchBar:(UISearchBar*)searchBar textDidChange:(NSString*)text { [self filter:text]; } -(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{ [self filter:@""]; [_searchBar resignFirstResponder]; [_searchBar setText:@""]; [_tableView reloadData]; } - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar { [_searchBar setShowsCancelButton:YES animated:YES]; } -(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar { [_searchBar setShowsCancelButton:NO animated:YES]; }
Le contrôle d'Apple fonctionne comme ça. Je l'ai résolu en mettant en œuvre un contrôleur distinct (contrôleur d'affichage de recherche de la recherche d'appel), qui est une barre de recherche déléguée et applique un prédicat à la source de données. De cette façon, la vision de la table est filtrée "en ligne". P>
Avez-vous trouvé une solution? J ai exactement le même problème.
Quelqu'un a-t-il déjà expliqué comment faire cela?