Barre de recherche et la Recherche de contrôle de l'Affichage dans la vue tableau

J'ai essayé de mettre en œuvre une barre de recherche mais je n'ai pas eu la chance de régler ce problème. Je serais vraiment reconnaissant de toute aide qui peut être apportée. J'ai un grand projet dans lequel j'ai une vue de la table, et je veux le mettre en œuvre une barre de recherche et voir le filtrage en temps réel. Je n'utilisez pas de Storyboard mais je suis en utilisant XIB. J'ai ajouté les protocoles suivants:

<UITableViewDelegate,UITableViewDataSource,UISearchBarDelegate,UISearchDisplayDelegate>

J'ai déclaré 2 tableaux dans @interface , la première pour l'ensemble de éléments et un second pour la filtrés par:

    NSArray*     OldList;
    NSArray*     filteredList;

Puis j'ai placé le nombre de lignes et le nombre de sections et puis:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    myClassCell *cell = [tableView dequeueReusableCellWithIdentifier:MYCELLCLASS];
    if (cell == nil)
    {
        cell = [myClassCell newFromNib];
    }
    NSMutableDictionary* elem = nil;
    if (tableView == self.searchDisplayController.searchResultsTableView)
    {
        elem = [filteredList objectAtIndex:indexPath.row];
        if ([elem count]+1 > indexPath.row)
            [cell showValues:elem];
        else
            [cell showValues:nil];
    }
    else
    {
        elem = [OldList objectAtIndex:indexPath.row];
        if ([elem count]+1 > indexPath.row) 
            [cell showValues:elem];
        else
            [cell showValues:nil];
    }
    return cell;
}

-(void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];
    filteredist = [OldList filteredArrayUsingPredicate:resultPredicate];
}

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    [self filterContentForSearchText:searchString scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
    objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
    return YES;
}

À ce point, je n'ai pas fait de modifications apportées à la xib, pas de liens et pas autres choses. Si je compile j'obtiens ma table, mais, évidemment, si j'ai essayer de chercher quelque chose, rien ne fonctionne. D'ailleurs si j'ai faites défiler jusqu'à la fin du tableau, l'application se bloque. Le vrai problème, c'est que je ne peux pas voir la barre de recherche de travail. Quelqu'un pourrait-il m'aider s'il vous plaît?

  • Il y a un certain nombre d'éléments manquants à partir de votre code. Ma suggestion est d'exécuter un projet de test à l'aide de Storyboard, faites glisser un UISearchDisplayController dans un UITableView, et d'observer le système automatique de prise de connexions qui sont faites par Xcode. Ces comprendra la définition de la les délégués appropriés. Vous aurez également besoin d'examiner la façon dont votre vue de la table de source de données, les méthodes de préparer la searchResultsTableView. Vous trouverez de nombreux bons tutoriels à partir d'une recherche sur Google. Il y a beaucoup de questions AFIN de régler le problème, vous présenter. Si vous êtes toujours bloqué après cela, laissez-moi savoir et je vais vous proposer des suggestions.
  • Tout d'abord merci pour votre réponse. J'ai cherché une solution sur google et j'ai trouvé intéressant tutiorials, c'est vrai, mais je n'avais pas trouvé un moyen de yo résoudre mon problème (mon mauvais pour être sûr). Je vais essayer d'aller en profondeur dans mon code et je vais essayer de lancer un projet de test avec storyboard, comme vous l'avez suggéré
  • J'ai suivi votre suggestion, mais je suis coincé ici. Je pense que le principal problème est lié à la connexion à partir du code de la xib.
  • Cela peut aider quelqu'un stackoverflow.com/a/39388169/2033377