Probleme d'affichage des valeurs dans une NSTableView

Bonjour


 


J'essaye de mieux comprendre le fonctionnement d'une NSTableView. J'ai essayé un maximum de tutos en utilisant les Binding ou non mais je tombe sur le même problème: l'affichage des valeurs. J'ai l'impression d'avoir raté un lien mais ne ne vois pas où. J'ai mis en pièce jointe mon code qui correspond à  un code très simple sans binding. Est ce que quelqu'un peut y jeter un coup d'oeil ?


 


Merci d'avance


 


 


Réponses

  • CéroceCéroce Membre, Modérateur
    Quand on utilise une table "View Based" (ce qui est le cas ici), il faut implémenter la méthode -tableView:viewForTableColumn:row: de NSTableViewDelegate.

    Pour créer une instance de cette vue, tu disposes de deux possibilités:
    1) Créer une instance de NSTableCellView et la configurer (elle possède un textfield et une image view)
    2) ou créer ta propre vue. Dans ce cas, tu crées son "prototype" dans le xib, tu lui donnes un identifiant, et tu appelles -[NSTableView makeViewWithIdentifier:owner:] pour que la table l'instancie à  partir du prototype.
  • Merci Céroce. Toujours là  pour un coup de main !


     


    Bon, j'ai bien compris ta solution sauf que :


    j'avais déjà  utilisé NSTableView il y a un an maintenant en suivant comme je l'ai fait maintenant les tutos et ça marchait bien sans avoir à  reconfigurer quoi que ce soit.

    En fait, si je copie mon ancien NSTableView et que je le place à  coté de ma nouvelle configuration, bien sûr en refaisant les mêmes liens  (ceux que j'avais fait dans mon exempte), cette fois ça marche.

    D'où ma question, qu'est ce qui a changé entre mon ancien NSTableView et mon nouveau ?


     


    Voici le projet avec mon ancien NSTableView (cette fois ci avec un array controller). On constate bien le pbl en cliquant sur Add.


     


  • CéroceCéroce Membre, Modérateur
    Je ne suis pas allé voir dans les détails, mais je vois que la table de droite est "cell based" et bindée, donc les deux exemples ne sont pas comparables.
  • Merci beaucoup Céroce. En effet la tableView est (je suppose) maintenant par défaut à  view based. En la repassant à  cell based ça fonctionne. 


    Merci encore pour ton aide


  • CéroceCéroce Membre, Modérateur
    On peut utiliser les bindings avec une table " view based ", seulement c'est la NSTableCellView qui prend la valeur ('objectValue'), et il faut ensuite binder ses sous-vues dessus.
  • Merci encore


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