2010-11-17 2 views
9

Je souhaite implémenter une fonctionnalité de recherche avancée de sorte que si un texte particulier est tapé dans la barre de recherche, la liste des contenus de UITableview doit être filtrée en fonction de la recherche et les occurrences de recherche doivent être surlignées. S'il vous plaît donnez-moi des idées?Mise en œuvre de la recherche avancée dans l'iphone?

Répondre

13

Utilisez NSAttributedString ... Trouvez UIControllers qui attirent NSAttribute cordes parce UILabel, UITextView doesnot NSAttributedString support ...

Obtenez le contrôleur ici: https://github.com/AliSoftware/Ali-Cocoa-Classes/tree/master/OHAttributedLabel

PS: si vous prévoyez de distribuer un iOS6- Seule l'application, comme UILabel supporte désormais NSAttributedString, vous devez utiliser UILabel directement à la place de OHAttributedLabel car il est maintenant supporté nativement par le système d'exploitation.

+0

Je ne peux pas trouver des contrôleurs pour chaîne NSAttributed –

+2

Essayez avec cet exemple de code .. https://github.com/AliSoftware/Ali-Cocoa-Classes – KingofBliss

+1

N'oubliez pas d'ajouter le CoreText.framework. –

0

Je n'ai pas essayé quelque chose comme moi-même, mais mon approche serait la suivante:

  1. implémentez la méthode textField:shouldChangeCharactersInRange:replacementString: dans votre objet UITextFieldDelegate. Cette méthode sera appelée pour chaque caractère entré ou supprimé de votre zone de texte. Dans la méthode de délégation ci-dessus, basée sur le contenu du texte actuel dans TextField, effectuez votre recherche et renvoyez une liste (tableau) de résultats.

  2. Prenez le tableau et pour chaque résultat, créez un UITableViewCell personnalisé. Cette cellule doit avoir un UIWebView dont le texte est un extrait de votre résultat de recherche. Pour la surbrillance, vous devez effectuer une recherche-remplacement dans le texte que vous êtes sur le point de rendre dans le WebView pour trouver la chaîne de recherche, disons foo par exemple, et remplacez-la par <b>foo</b> ou toute autre mise en forme HTML souhaitera peut-être postuler. Vous pouvez utiliser l'API NSString standard - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement pour effectuer la recherche/remplacement.

Espérons que cela aide.

+1

J'ai d'abord essayé avec UIwebView mais cela prend beaucoup de temps à charger, donc je suis passé à ça. Non c'est beaucoup plus rapide et ça a l'air génial .. – KingofBliss