2010-03-23 4 views
3

J'ai un UISearchDisplayController qui est utilisé pour afficher une longue liste d'options à choisir par l'utilisateur. Je filtre la liste en utilisant la barre de recherche fournie par le contrôleur.UISearchDiplayController: afficher tous les résultats sans entrer de texte?

Tout fonctionne bien, sauf que je ne peux pas afficher la table des résultats sauf en entrant du texte dans la barre de recherche. Je veux que la table montre tous les résultats que j'ai, même quand il n'y a pas de texte dans la barre de recherche. À l'heure actuelle, quand il n'y a pas de texte, j'ai juste une vision sous-jacente.

Est-ce possible s'il vous plaît? Ou devrais-je ne pas m'embêter avec le UISearchDisplayController du tout, et juste avoir une barre de recherche dans une autre tableview que j'affiche, et puis juste le sortir de la pile?

Répondre

0

Généralement, vous voudriez commencer par charger tout votre contenu dans un seul tableau à partir duquel vous afficheriez une vue de table comme "normale".

Une fois que cela fonctionne, créez un second tableau contenant les résultats de la recherche à l'intérieur

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

Ensuite, dans les méthodes de source délégué/données de la vue de la table, décider quel contexte vous êtes en cochant

if (_tableView == self.searchDisplayController.searchResultsTableView) 
3

pour afficher les résultats de recherche instantanément avec SearchBar vide sur l'apparence du clavier, ajoutez le code suivant à ViewController:

-(void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller { 
    [controller.searchBar.delegate searchBar:controller.searchBar textDidChange:@" "]; 
} 

Pour garder les résultats montrant tableau lorsque les utilisateurs entrent entre texte et puis efface SearchBox, ajouter:

-(void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView { 
    [controller.searchBar.delegate searchBar:controller.searchBar textDidChange:@" "];  
} 

Ne pas oublier de revenir OUI dans searchDisplayController: shouldReloadTableForSearchString:

+0

Parfait! Une note pour les futurs visiteurs: assurez-vous que votre délégué searchBar est réglé sur UISearchDisplayController si vous avez vous-même agi comme vous l'avez fait. – Philip

Questions connexes