[Résolu] NSTableView + Custom Row + Bindings... Une solution simple ?

LeChatNoirLeChatNoir Membre, Modérateur
septembre 2006 modifié dans API AppKit #1
Salut à  tous !
Ca faisait un bout de temps que j'avais pas posté ici !
Pourtant, c'est pas faute de coder ! Mon client FTP avance toujours bon an mal an.
Mais bon, faut croire que je deviens autonome  :P

Mais bon, pas tout à  fait encore puisque j'ai un nouveau problème.

J'explique :
J'ai une NSTableView qui abrite les transferts en cours (fichier source, cible, progression, etc).
Toutes les information sont dans mon modèle qui est bindé à  un NSArrayController qui lui même est bindé à  ma TableView.

J'ai donc 1 colonne pour le nom de fichier source, 1 pour l'avancement, etc, etc....

Maintenant, je veux "polisher" tout ça et je comptais carrément faire une cellule dans laquelle j'organise mes informations comme je veux, en mode graphique puisque rien ne sera éditable.

Et ben, figurez vous que je sais pas bien comment faire...  :-\\

Je souhaite faire ça en gardant bien sûr mon organistation actuelle, c-a-d modèle/ArrayController/TableView, le tout "lié" par "bindings" (un peu redondant tous ces liens !!).

Je pensais sous classer une NSCell et faire tout ça dans le drawRect mais je ne sais pas (dans ce drawRect) récupérer les infos à  afficher....

Merci de votre aide  !!!
a+

Réponses

  • BruBru Membre
    03:49 modifié #2
    dans 1157629286:

    Salut à  tous !
    Ca faisait un bout de temps que j'avais pas posté ici !
    Pourtant, c'est pas faute de coder ! Mon client FTP avance toujours bon an mal an.
    Mais bon, faut croire que je deviens autonome  :P


    ou alors que tu postes aussi sur un autre forum en tant que AppleAndMe...


    dans 1157629286:

    Maintenant, je veux "polisher" tout ça et je comptais carrément faire une cellule dans laquelle j'organise mes informations comme je veux, en mode graphique puisque rien ne sera éditable.
    Et ben, figurez vous que je sais pas bien comment faire...  :-\\
    Je souhaite faire ça en gardant bien sûr mon organistation actuelle, c-a-d modèle/ArrayController/TableView, le tout "lié" par "bindings" (un peu redondant tous ces liens !!).
    Je pensais sous classer une NSCell et faire tout ça dans le drawRect mais je ne sais pas (dans ce drawRect) récupérer les infos à  afficher....


    NSCell permet de représenter "visuellement" une valeur.
    Donc, pour récupérer la valeur que tu dois "visuellement" dessiner (dans drawRect:), il te suffit d'appeller intValue, floatValue, stringValue, etc... sur ta cellule à  dessiner (en l'occurence self).
    Tu peux aussi utiliser objectValue : cela permet de dessiner un NSCell avec un objet non-standard (qui n'est ni NSNumber, ni NSString).

    .
  • LeChatNoirLeChatNoir Membre, Modérateur
    03:49 modifié #3
    dans 1157633074:

    ou alors que tu postes aussi sur un autre forum en tant que AppleAndMe...


    Aie, j'suis repéré !!!
    Bof, je poste pas plus sur "the other" forum d'ailleurs.
    Et j'aurai bien aimé resté LeChatNoir mais c'était pris  :-\\

    Sinon, merci de ta réponse mais en fait, je comptais ne faire qu'une colonne dans ma tableView donc 1 seule NSCell. Et récupérer toutes les infos dans cette seule NSCell.

    Du coup, ta réponse me met un peu (beaucoup) sur la voie : il me suffit de "grouper" ces réponses dans un dictionnaire (d'ailleurs, c'est le cas) et de binder la cellule au dico.

    Et comme ça dans ma NSCell, je récupère [self valueForKey:@mon info1], [self valueForKey:"mon info2"] etc, etc.

    C'est ça l'idée ?

  • BruBru Membre
    03:49 modifié #4
    Oui, quelque chose comme ça.
    Par contre, je ne sais pas si tu peux binder ton dictionnaire entier à  ta cellule (via NSTableView).

    .
  • LeChatNoirLeChatNoir Membre, Modérateur
    03:49 modifié #5
    Je viens de regarder vite fait et ça a pas l'air de trop lui poser pb.
    Trop cool !
    Merci Bru  <3
  • LeChatNoirLeChatNoir Membre, Modérateur
    03:49 modifié #6
    Re,

    J'ai regardé d'un peu plus prêt et je confirme : ça fonctionne !

    A un détail prêt : il ne faut pas faire [self valueFroKey:@maClé] mais
    self objectValue] valueForKey:@&quot;MaClé&quot;;

    Et le tour est joué !
    Je dispose de toutes les infos de mon dico et je les agence comme il me plait.

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