2010-02-03 6 views
0

J'ai UIPicker que j'ai besoin d'écrire mécanisme de recherche. Les données qui alimentent ce sélecteur sont un tableau de chaînes. Lorsque l'utilisateur entre la chaîne de recherche (j'ai un UISearchBar qui gère cela.) Je voudrais trouver toutes les chaînes contenant le terme de recherche. De l'exemple ci-dessous, il semble que j'ai besoin d'écrire un prédicat puis de filtrer le tableau. Le problème que j'ai en ce moment est que je ne sais pas comment afficher les résultats de la recherche à l'utilisateur. J'ai essayé d'affecter le jeu de résultats au tableau d'origine, mais ce n'est pas correct. Quelqu'un pourrait-il suggérer une technique pour implémenter la recherche d'un UIPicker avec un exemple de code?iPhone SDK: Comment implémenter la recherche dans un UIPicker?

NSMutableArray* names = [NSMutableArray arrayWithObjects:@"Andy", @"Bart", @"Bob", nil]; 
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] 'b'"]; 
NSArray* namesStartingWithB = [names filteredArrayUsingPredicate: predicate]; 

Merci d'avance.

Répondre

0

est ici un travail project

Rappelez-vous votre prédicat est sensible à la casse. Vous avez utilisé un b en minuscule pour qu'il ne renvoie aucun résultat. Ma solution est essentiellement la même chose que Joe a suggéré. J'utilise deux tableaux. Un tableau pour l'ensemble de données complet, puis un autre tableau pour le résultat de la recherche. La source de données pour le sélecteur est le tableau partiel puis je recharge juste le sélecteur quand je fais une recherche.

+0

Merci pour l'exemple utile que j'ai dû modifier légèrement car j'utilise un NSMutableArray \t NSPredicate * predicate = [NSPredicate predicateWithFormat: @ "AUTO beginswith [c] 'B'"]; \t [arrayCountryChoices filterUsingPredicate: prédicat]; \t [pickerCountry reloadComponent: 0]; \t Cela fonctionne bien Mon seul qu. estion est comment puis-je restaurer l'ensemble de données d'origine après un filtre? – user265550

+0

Dans mon exemple, data est l'ensemble de données d'origine et searchResults est l'ensemble de données filtré. pour restaurer l'original, je ferais ceci: self.searchResults = [NSArray arrayWithArray: data]; –

0

Il ne s'agit en aucun cas d'une solution super inventive, mais qu'en est-il du stockage des résultats sous la forme d'un tableau sperate (c'est-à-dire searchResultsArr) et de la modification de la source de données? Dans le code, utilisez simplement searchResultsArr à moins que ce soit nul. Si c'est nul, utilisez le tableau complet.

assurez-vous d'appeler

[picker reloadAllComponents]; 

lorsque vous passez dehors

+0

J'ai essayé de coder ce que vous suggérez et cela ne fonctionne pas comme prévu. Avez-vous un exemple de code de travail? Comme mentionné ci-dessus "Le problème que j'ai en ce moment est que je ne sais pas comment afficher les résultats de la recherche à l'utilisateur.J'ai essayé d'assigner le jeu de résultats au tableau d'origine mais ce n'est pas correct. pour assigner le tableau des résultats de la recherche à la source de données pour l'UIPicker qui est déclaré comme ceci: NSMutableArray * arrayCountryChoices; – user265550

Questions connexes