SearchBox dans un menu disponible dans la statusBar

Bonjour,


 


Je viens à  vous encore une fois parce que je suis coincé ...


 


J'ai une application dans la status bar sous forme d'une longue et complexe structure de menu et j'aimerais y ajouter une fonction de recherche (un peu comme le search du menu help d'xcode).


 


Idéalement il me faudrait donc y faire apparaitre la liste des résultat à  chaque frappe de clavier dans une petite box sous la recherche.


 


Je dois dire que toute la structure du menu est construite par code, je n'utilise pas de xib pour ça ..


 


donc j'ai deja  trouvé comment y ajouter ma fenêtre de recherche via un setView :


    



NSMenuItem *searchBoxItem = [[NSMenuItem alloc]initWithTitle:@Search action:NULL keyEquivalent:@""];
    [searchBoxItem setEnabled:YES];
    [searchBoxItem setView:searchFieldView];
    [connectMenu addItem:searchBoxItem];

fenêtre de recherche que j'ai créé dans mon fichier .xib principale 


 


Je suppose que la recherche passera par l'action du NSMenuItem .. mais j'ai un gros doute ..


 


Je suis pas sur que ce soit clair ..


 


En tout cas maintenant je ne sais pas trop comment continuer ..


 


ah j'oubliais .. ça fait un moment que je n'ai pas développer .. je crois que je suis un peu rouillé ..


 


Enfin si quelqu'un à  deja fait ça .. et pouvait me guider un peu, ça ne serait pas de refus.


 


Merci


 


Cordialement


Claude


 

Réponses

  • CéroceCéroce Membre, Modérateur
    janvier 2016 modifié #2

    Je n'ai jamais fait ça spécifiquement, mais je pense que tu t'y prends correctement.


    Ton menu est composé d'un NSMenuItem, qui contient des NSMenuItems enfants.


     


    Le premier NSMenuItem enfant contient le NSTextField de recherche. Tu est informé de la frappe par l'action.


     


    Le plus simple est de créer au début un NSArray qui contient tous les NSMenuItems suivants.


    À chaque fois qu'on tape des caractères:


    - retire tous les NSMenuItems enfants après celui contenant le champ de recherche.


    - filtre ce NSArray en ne conservant que les NSMenuItems dont le titre correspond à  la recherche


    - ajoute les NSMenuItems filtrés à  la suite du champ de recherche


     


    ça peut sembler lourd de tout retirer pour tout ajouter à  chaque fois, mais c'est bien plus simple que de chercher les différences, et à  mon avis, ça ne joue pas sur les performances (on ne réaffiche qu'une fois).


  • au besoin j'ai un NSArray qui contient tous mes objets composant mon menu, je peu donc y faire la recherche ..


     


    par contre en utilisant un NSTextField pour entrer ma recherche ça veut aussi dire que je doit construire "manuellement" la liste de réponses ? ou y a t'il un moyen d'avoir ça automatiquement ... si j'ai bien compris NSSearchField est fait pour ça ? ou je me trompe ?


  • CéroceCéroce Membre, Modérateur


    par contre en utilisant un NSTextField pour entrer ma recherche ça veut aussi dire que je doit construire "manuellement" la liste de réponses ? ou y a t'il un moyen d'avoir ça automatiquement ... si j'ai bien compris NSSearchField est fait pour ça ? ou je me trompe ?




    C'est que j'ai pas vraiment compris ce que tu souhaitais faire.


    Effectivement, NSSearchField permet d'afficher des "suggestions" comme dans un navigateur web. Par contre, je n'ai pas l'expérience.

  • c'est exactement ça .. une liste de suggestions  :p  !


     


    bon ben j'espère que quelqu'un d'autre à  deja implanté ça ..


     


    Merci quand même !


  • Je viens de faire ma fonction de recherche qui me retourne donc un NSArray contenant tous les objets correspondant à  ma recherche, me reste plus qu'à  savoir comment l'afficher et le rendre "clickable" et surtout comment rentrer la recherche ..


     


    personne pour une bonne idée ?


Connectez-vous ou Inscrivez-vous pour répondre.