Je veux mettre en œuvre une fonctionnalité de recherche avancée de sorte que si un texte particulier est tapé dans la barre de recherche, la liste de contenu dans UITableview devrait être filtrée sur la base de la recherche et ensuite les occurrences du texte recherché devraient être mises en évidence ? Veuillez me donner quelques idées ?
Réponses
Trop de publicités?Utiliser NSAttributedString... Trouver les UIControllers qui dessinent NSAttribute String parce que UILabel,UITextView ne supporte pas NSAttributedString...
Obtenez le contrôleur ici : https://github.com/AliSoftware/Ali-Cocoa-Classes/tree/master/OHAttributedLabel
PS : si vous prévoyez de distribuer une application uniquement pour iOS6, comme UILabel supporte maintenant NSAttributedString, vous devriez utiliser UILabel directement au lieu de OHAttributedLabel car il est maintenant supporté nativement par l'OS.
Je n'ai pas essayé quelque chose comme ça moi-même mais mon approche serait la suivante :
-
Mettre en œuvre la méthode
textField:shouldChangeCharactersInRange:replacementString:
dans votreUITextFieldDelegate
objet. Cette méthode sera appelée pour chaque caractère saisi ou supprimé de votre textField. -
Dans la méthode déléguée ci-dessus, sur la base du contenu actuel du texte dans le TextField, effectuez votre recherche et renvoyez une liste (tableau) de résultats.
-
Prenez le tableau et pour chaque résultat, construisez une UITableViewCell personnalisée. Cette cellule doit contenir une UIWebView dont le texte est un extrait du résultat de votre recherche.
-
Pour la mise en évidence, 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 la remplacer par
<b>foo</b>
ou tout autre formatage HTML que vous souhaitez appliquer. Vous pouvez utiliser l'API standard NSString- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
pour effectuer la recherche-remplacement.
J'espère que cela vous aidera.