NSSearchField et bindings

fouffouf Membre
22:45 modifié dans API AppKit #1
ClicCool, a l'aide  :why?:

Je souhaite avoir un NSSearchField qui a comme menu les recherches recentes.
J'ai d'abord "binder" NSSearchField comme cela :
- bind to NSUserDefaultsController
- controller key : values
- model key path : recentSearches

Pour l'instant, ca marche, je retrouve bien les resultats dans mon fichier de preferences. La ou ca bloque, c'est quand je veux recuperer ces donnees dans un menu. En effet, ya pas de bindings pour les NSMenu. J'ai essaye avec un NSMenuItem, mais la, ca ne marche pas : le run log me retourne
Cannot create int from object (essai, essai2) of class NSCFArray


Comment faire pour m'en depatouiller uniquement avec les bindings ? (sinon je sais comment m'y prendre en codant)

Au secours ClicCool

Réponses

  • ClicCoolClicCool Membre
    22:45 modifié #2
    Désolé Fouf mais j'ai eu quelques jours d'absence et j'ai loupé ton post  :(

    Mais les NSMenuItem sont complexes et ne se définissent seulement par leur titre mais aussi par une action liée.
    La seule solution que je vois pour l'utilisation des bindings dans ton cas est de s'en servir pour maintenir un NSArray des titres d'item et d'utiliser le Key Value Observing avec:
    addObserver:<#(NSObject *)observer#> forKeyPath:<#(NSString *)keyPath#> options:<#(NSKeyValueObservingOptions)options#> context:<#(void *)context#>
    

    pour détecter tout changement dans la liste qui lancera, à  chaque modif de ton NSArray de titres, la méthode:
    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
    

    dans laquelle tu mets à  jour ton menu.

    Mais tu as sans doutes déjà  codé tout ça autrement j'imagine ...
  • fouffouf Membre
    22:45 modifié #3
    Merci beaucoup pour ta reponse. J'ai comme tu l'a dit deja trouver comment coder ca, sans utiliser les bindings : http://www.objective-cocoa.org/forum/index.php?topic=581

    En tout cas, ca m'a permis d'apprendre des trucs sur les menu. Merci ClicCool
Connectez-vous ou Inscrivez-vous pour répondre.