Comment obtenez-vous une capacité de recherche similaire à Spotlight ou iTunes?
-
03-07-2019 - |
Question
J'ai un NSTableView qui contient quelques colonnes remplies de données. Comment configurer une barre de recherche capable de filtrer les lignes en fonction du contenu d'une colonne spécifique? Je recherche le type de fonctionnalité de Spotlight dans le Finder ou de la barre de recherche dans iTunes permettant de filtrer les chansons par métadonnées.
La solution
Votre source de données peut-elle être gérée par NSArrayController?
Il existe 2 approches standard . La première technique (pré-Tiger) consiste à sous-classer NSArrayController, en remplaçant l'arrangementObjects. La seconde (post-Tiger) consiste à lier les prédicats de NSSearchField au filterPredicate de NSArrayController. Dans les deux cas, liez les propriétés de votre vue à la clé rangéeObjet
du contrôleur (par exemple, associez le nom "NSTableColumn" à la touche rangéObjet.nom
du contrôleur et liez le contenu du NSTableView à < code> arrangeObjets ) Vous voudrez peut-être lire la l'écriture de prédicats .
Autres conseils
"Spotlight" L’API SearchKit vous donne cette possibilité, bien que pour un cas simple comme celui que vous décrivez, NSPredicate serait probablement un meilleur choix. Si cela vous intéresse, j’ai écrit une présentation SearchKit pour CocoaHeads, vous pouvez prendre regardez ici .