6
votes

Comment montrer SearchResultTableView lorsque la barre de recherche est activée?

Je suis implémentant un 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.

Ceci fonctionne lorsque je commence à entrer des valeurs dans la barre de recherche. p>

- (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];
}


2 commentaires

Avez-vous trouvé une solution? J ai exactement le même problème.


Quelqu'un a-t-il déjà expliqué comment faire cela?


4 Réponses :


0
votes

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 ReloadData : xxx

et modifie votre numéro convectiveViewView méthode comme: xxx < / Pré>

J'espère que ça va vous aider.


3 commentaires

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?



0
votes
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    // Remove temporary table view
    [_tempRecentSearchTableView removeFromSuperview];
}

0 commentaires

0
votes

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];
}


0 commentaires

0
votes

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".


0 commentaires