NSTableView

CoreCore Membre
21:46 modifié dans API AppKit #1
Bonjour,

J'ai suivi pas à  pas le tuto de CocoaDev sur le NSTableView mais rien à  faire rien ne s'affiche dans ma table.
J'ai une classe "controlleur", dont l'intance dans IB est réliée par le dataSource et par le Delegate à  la table

J'ai fait un tableau test avec des NSStrings dedans mais rien ne s'affiche...
Si quelqu'un pouvais me filer  un petit coup de pouce !  :'(

Réponses

  • Eddy58Eddy58 Membre
    21:46 modifié #2
    Fais voir le code de ton controleur Core...:)
  • CoreCore Membre
    21:46 modifié #3
    il est identique à  celui du tuto

    http://www.cocoadev.com/index.pl?NSTableViewTutorial

    A la différence que le tableau est un tableau avec 3 NSStrings (j'ai vérifié le contenu du tableau.

    IL semblerait que ma NSTableView n'appelle pas les méthodes pour se remplir.
  • Eddy58Eddy58 Membre
    21:46 modifié #4
    Oui, mais là  comme ça on peut rien voir, le mieux serait de faire voir ton code, ou encore mieux, si tu peux zipper le projet et le mettre en attachement dans un poste... :)
  • CoreCore Membre
    21:46 modifié #5
    voici donc le fichier

    Je m'expose certainement à  des réflexions du style :

    " Grand Dieu!!! non,  mais c'est n'importe quoi ce que tu as fait" mais c'est pas grave. L'échec est le privilège de celui qui essaie

    Merci D'avance


    [Fichier joint supprimé par l'administrateur]
  • Eddy58Eddy58 Membre
    21:46 modifié #6
    Tout d'abord, et je le dis assez souvent, il n'y a que ceux qui ne font rien qui ne font pas de conneries ok Core ? :o

    Bon, la grosse erreur que tu as faites, a été de sous-classer NSTableView pour t'en servir de controleur. J'ai effacé ta classe "table", que j'ai remplacée par une classe "Controleur", sous-classe de NSObject. Je l'ai instanciée et réglée en data source de ta tableview.
    Ton NSMutableArray n'était pas instancié, je l'ai fait dans awakeFromNib, avant ta boucle de remplissage de ton array.
    Voilà , étudie attentivement le fichier nib et la classe Controleur pour comprendre comment ça marche, et si tu as des questions n'hésites pas. :P

    [Fichier joint supprimé par l'administrateur]
  • CoreCore Membre
    21:46 modifié #7
    En fait j'avais d'abord fait une sous classe de NSObject et puis je suis tombé sur un tuto (un autre que celui de CocoaDev) qui parlait de sous classe de NSTableView alors j'avais essayé ca.

    Je vais me pencher sur tes modifs et merci bcp 
  • CoreCore Membre
    21:46 modifié #8
    J'ai bien compris le principe merci beaucoup.

    J'ai encore 2 petites question :

    _ Quel type d'objet est capable d'afficher un NSTableView à  part un NSString et NSNumber ?

    _ Dans le tutoriel cité ci dessus, il parlent de relier le deleguate, je ne suis pas vraiment sur de comprendre cette notion de "deleguate"
  • Eddy58Eddy58 Membre
    avril 2005 modifié #9
    1) Tu peux mettre des tas de choses dans une tableview tu sais...NSString, NSNumber, NSDate, NSImage, et même des boutons aussi. En faites, en bricolant avec NSCell, tu peux faire des tas de choses. :)

    2) Les méthodes delegates permettent d'interagir sur le comportement d'un objet. Quand tu fais un objet delegate d'un autre, ce dernier va appeler ses méthodes delegate, qui seront donc implémentées dans l'objet delegate. Tu met les méthodes que tu veux, selon tes besoins. Par exemple, la méthode delegate suivante de la classe NSTableView :
    [tt]
    - (BOOL)selectionShouldChangeInTableView:(NSTableView *)aTableView
    [/tt]
    Celle-ci te renseigne sur le fait que l'utilisateur a cliqué sur une ligne de la tableview et que la sélection sera donc changée, mais si pour une raison ou une autre tu ne veux pas qu'elle soit changée, il te suffit de mettre un NO en retour.
    Exemple :
    [tt]
    -(BOOL)selectionShouldChangeInTableView:(NSTableView *)aTableView
    {
         if (value==10)
         {
              return NO;
         }
         else
         {
              return YES;
         }
    }
    [/tt]
    Si la variable "value" est égale à  10, la sélection ne sera pas changée, mais si c'est une autre valeur, alors le changement sera autorisé.
    Le sujet des delegates est assez vaste, mais ils permettent d'éviter élégamment le sous-classement.
    Tu peux aller lire ce topic pour en savoir un peu plus :
    http://www.objective-cocoa.org/forum/index.php?topic=208.0
  • CoreCore Membre
    21:46 modifié #10
    Merci bien, j'ai enfin compris le deleguate !
Connectez-vous ou Inscrivez-vous pour répondre.