Remplir donnée NSTableView sans IB

devulderdevulder Membre
04:35 modifié dans API AppKit #1
Bonjour,

Je Galere pour remplir les donnée d'un NSTableView sans utiliser IB.

Quelqu'un connait un lien sur un exemple complet de code ?

Merci.

Réponses

  • AliGatorAliGator Membre, Modérateur
    04:35 modifié #2
    Salut et bienvenue sur OC!

    Il faut que tu définisses un objet comme étant le "dataSource" de ta NSTableView.
    Cet objet devra alors répondre aux méthodes du protocole <NSTableDataSource>, en particulier à  deux méthodes : [tt]numberOfRowsInTableView[/tt] qui doit renvoyer le nombre de lignes que contient ta TableView, et [tt]tableView:objectValueForTableColumn:row:[/tt]pour indiquer le contenu de la ligne row à  la colonne column de ta TableView.

    Tout ceci est expliqué ici. Le protocole NSTableDataSource est quant à  lui documenté ici.
  • devulderdevulder Membre
    février 2009 modifié #3
    Merci pour l'info

    J'ai trouvé ce qu'il fallait.

    Merci
  • devulderdevulder Membre
    04:35 modifié #4
    oops

    j'ai toujours un souci.

    je joint le lien pourt charger le projet xcode

    si quelqu'un peut m'aider.

    merci

    http://rgb.free.fr/downloads/exemple.zip
  • MalaMala Membre, Modérateur
    04:35 modifié #5
    dans 1235654271:

    oops

    j'ai toujours un souci.

    Comment ta table view sait ce qu'elle doit afficher? Il n'y a pas quelque chose qui te choque?  :)

    Il te faut lui ajouter des colonnes. Voir du côté de NSTableColumn...



  • devulderdevulder Membre
    04:35 modifié #6
    argh

    venant du monde win32, je n'avait pas vu qu'il fallait au minimum une colonne.

    Je regarde cela.

    Merci
  • Philippe49Philippe49 Membre
    04:35 modifié #8
    Manifestement tu n'as pas lu le livre de Hillegass ...
  • mpergandmpergand Membre
    04:35 modifié #9
    dans 1235718632:


    exemples de n'importe quoi  :)
    @implementation Controller<br /><br />-(void) awakeFromNib<br />{<br />	window=[[NSWindow alloc] initWithContentRect:NSMakeRect(300,400,300,300) styleMask: NSTitledWindowMask<br />	backing:NSBackingStoreBuffered&nbsp; defer:YES];<br /><br />	NSTableView* table=[[NSTableView alloc] initWithFrame: NSMakeRect(0,0,200,200)];<br />	<br />	NSTableColumn* col=[[NSTableColumn alloc] initWithIdentifier:@&quot;col1&quot;];<br />	[col setWidth:100];<br />	[[col headerCell] setStringValue: @&quot;Col 1&quot;];<br />	[table addTableColumn:col];<br />	[col release];<br />	<br />	col=[[NSTableColumn alloc] initWithIdentifier:@&quot;col2&quot;];<br />	[col setWidth:100];<br />	[[col headerCell] setStringValue: @&quot;Col 2&quot;];<br />	[table addTableColumn:col];<br />	[col release];<br />	<br />	NSScrollView *scrollView = [[NSScrollView alloc] initWithFrame:NSMakeRect(10,90,200,200)];<br />	[scrollView setAutohidesScrollers: NO];<br />	[scrollView setDocumentView:table];<br />	[scrollView setBorderType: NSBezelBorder];<br />	[scrollView setVerticalScroller:[[[NSScroller alloc] init] autorelease]];<br />	[scrollView setHasVerticalScroller:YES];<br />	[[window contentView] addSubview:scrollView];<br />	[table setDataSource:self];<br />	<br />	[table release];<br />	[scrollView release];<br /><br />	[window makeKeyAndOrderFront:self];<br /><br />}<br /><br />- (int)numberOfRowsInTableView:(NSTableView *)aTableView<br />{<br />&nbsp; &nbsp; return 40;<br />}<br /><br />- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex<br />{<br />	if([aTableColumn identifier]==@&quot;col1&quot;)<br />		return @&quot;--1--&quot;;<br />	<br />	return @&quot;--2--&quot;;<br />}<br /><br />@end<br />
    


  • Philippe49Philippe49 Membre
    février 2009 modifié #10
    Si tu veux des exemples, tu en as déjà  dans la doc d'Apple.
    Mountains par exemple est signalé en haut de la page de NSTableView

    L'explication du pourquoi du comment se trouve dans Table View Programming Guide

    Tout (ou pratiquement) livre sur Cocoa présente un exemple de gestion de TableView.

    Faire avec ou sans IB ne change rien à  la gestion du datasource, sinon que la création de la table view se afit par du code plutôt que par désarchivage du nib.
  • devulderdevulder Membre
    04:35 modifié #11
    Merci a tous pour vos précieux conseils.

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