NSTableView: la mise à  jour du Datasource par Action sur NSPopUpButtonCell

RocouRocou Membre
17:41 modifié dans API AppKit #1
Bonjour,

Je me suis aperçu que le datasource d'une NSTableView n'est mis à  jour qu'après le déroulement d'une IBAction associée à  un NSPopUpButtonCell.
Or je voudrais pouvoir récupérer l'item et le tag de mon NSPopUpButtonCell dans le code de cette IBAction.

Je ne vois pas comment faire  :'(

Réponses

  • CéroceCéroce Membre, Modérateur
    17:41 modifié #2
    Je t'avoue que je n'ai pas compris quel est ton problème.

    Que cherches-tu à  faire ?
    À quel comportement t'attends-tu ?
  • FloFlo Membre
    17:41 modifié #3
    J'avoue ne pas tout comprendre également...

    Ton NSPopUpButtonCell correspond au paramètre (id)sender de ton IBAction non ?
    Pour y avoir accès il suffit de caster ce paramètre, enfin si c'est bien ça ton problème...  :D

  • RocouRocou Membre
    17:41 modifié #4
    J'ai sans doute mal compris le fonctionnement.


    Soit le NSPopupButtonCell suivant:

    item: Jean, Patrick, Yves, Jacques
    tag: 23, 44, 51, 67

    Par défaut le NSPopupButtonCell affiche l'item Patrick.

    L'utilisateur choisit un élement du NSPopupButtonCell, par exemple Jacques. Et bien si j'interroge le datasource, c'est Patrick qui est censé être sélectionné.

    Si l'utilisateur choisit à  nouveau un item, c'est le précédent (Jacques) qui se trouve dans le datasource et ainsi de suite.

    Tout ceci dans le code de l'IBAction associée au NSPopupButtonCell. J'en conclue que la mise à  jour du datasource se fait après l'exécution de l'IBAction du NSPopupButtonCell.



    D'ailleurs, si j'interroge le NSPopupButtonCell après le déroulement de l'IBAction, le datasource est correct, il correspond au choix de l'utilisateur.

    Mais moi, je voudrais connaitre l'item et le tag du NSPopupButtonCell choisi pendant le déroulement de l'IBAction.

    (La raison étant que je dois déclencher une sauvegarde de la ligne modifiée ou créée de ma NSTableView. Cette sauvegarde intervient quand l'utilisateur clique sur une autre ligne ou sur un bouton de validation. Mais j'aimerais qu'elle intervienne également quand je modifie mon NSPopupButtonCell. Je précise que je n'utilise pas CoreData)
  • MickMick Membre
    janvier 2010 modifié #5
    Bonjour,

    As-tu essayé de réaliser ta fameuse sauvegarde dans la méthode
    - (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex
    


    de la dataSource, plutot qu'à  partir d'une IBAction ?
    Du coup, tu récupères la valeur courante (dans ton modèle de données) qui n'a pas été encore modifiée, et tu fais ce que tu veux avec.
    Le nouvel objet étant anObject , tu peux le récupérer et mettre à  jour ton modèle de données comme tu veux.(Il faut bien sur tester si la colonne est celle qui contient les popup et appeler la méthode de sauvegarde si c'est le cas)

    Il n'y a pas de raisons que cela ne fonctionne pas.
  • RocouRocou Membre
    17:41 modifié #6
    dans 1262439914:

    Il n'y a pas de raisons que cela ne fonctionne pas.

    Cela fonctionne évidemment très bien 

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