TableView & NSMutableArray

20:22 modifié dans API AppKit #1
Salut,
J'ai un tableau, une NSMutableArray qui contient des NSMutableDico qui contiennent eux même des objets avec leur valeur.
Le mutableArray est stocké ds un fichier plist
Les données s'affichent parfaitement ds le tableau sauf que maintenant je voudrais pouvoir récupérer les valeurs selon la ligne sélectionnée !
Merci d'avance :o

Réponses

  • BruBru Membre
    20:22 modifié #2
    Connais tu selectedRow ? c'est une méthode de NSTableView qui retourne le numéro de la ligne sélectionnée dans ta table...

    Donc, si tu fais :
    [tt]
    int index;

    index=[maNSTableViewAMoi selectedRow];
    if (index>=0)
    {
        dico=[monNSMutableArrayAMoi objectAtIndex:index];
    }
    [/tt]
    Tu récupères le NSDictionnary stocké dans ton NSMutableArray à  la ligne correspondant à  la sélection.

    Voilà ...

    .
  • CoreCore Membre
    20:22 modifié #3
    Je me permettrais juste de rajouter à  la réponse de nostre maistre incontésté , (j'ai nommé Sensei Bru, ceinture Noire 7è Dan en Cocoa)

    Qu'il faut juste lier une IBAction à  ta NSTableView, cela semble presque évident, mais il y a quelqes mois de ca, ca ne l'aurais pas été pour moi  :P
  • 20:22 modifié #4
    Oki doki merci bcp je connaissais la méthode mais je savais pas comment l'utiliser dans ce cas là 
  • 20:22 modifié #5
    Salut,
    J'évite de recommencé un nouveau Topic pour pas foutre le bordel sur le forum et vu que ma question traite sur le même sujet..
    Voilà , maintenant je me trouve avec 2 tableaux
    J'ai juste un problème minim mais vraiment minim :
    Mes 2 tableaux sont en dataSource sur ma classe
    <br />- (int)numberOfRowsInTableView:(NSTableView *)aTableView<br />{	<br />	return [recordsBalise count];<br />}<br /><br /><br />- (id)tableView:(NSTableView *)aTableView<br />&nbsp; &nbsp; &nbsp; objectValueForTableColumn:(NSTableColumn *)aTableColumn<br />&nbsp; &nbsp; &nbsp; row:(int)rowIndex<br />{<br />	<br />&nbsp; &nbsp; id theRecord, theValue;<br />&nbsp; &nbsp; theRecord = [recordsBalise objectAtIndex:rowIndex];<br />&nbsp; &nbsp; theValue = [theRecord objectForKey:[aTableColumn identifier]];<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; return theValue;<br />	<br />}<br />
    

    Et pour que les objets s'affiche dans le premier tableau j'ai du mettre ça.
    Seulement , depuis que j'ai mis le 2eme tableau et que je tente de faire la meme chose que pour le premier, ça donne ça :
    <br />- (int)numberOfRowsInTableView:(NSTableView *)aTableView<br />{	<br />	return [recordsBalise count];<br />&nbsp; &nbsp;  return [recordsBalise2 count];<br />}<br /><br /><br />- (id)tableView:(NSTableView *)aTableView<br />&nbsp; &nbsp; &nbsp; objectValueForTableColumn:(NSTableColumn *)aTableColumn<br />&nbsp; &nbsp; &nbsp; row:(int)rowIndex<br />{<br />	<br />&nbsp; &nbsp; id theRecord, theValue;<br />&nbsp; &nbsp; theRecord = [recordsBalise objectAtIndex:rowIndex];<br />&nbsp; &nbsp; theValue = [theRecord objectForKey:[aTableColumn identifier]];<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; return theValue;<br />	 id theRecord2, theValue2;<br />&nbsp; &nbsp; theRecord = [recordsBalise2 objectAtIndex:rowIndex];<br />&nbsp; &nbsp; theValue = [theRecord objectForKey:[aTableColumn identifier]];<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; return theValue2;<br />}<br />
    

    Mais rien à  faire, il ne m'affiche que le contenu du premier tableau :(
    Vous allez surement rire et trouver la solution facilement ;D
    Mais bon au moins après j'aurai, j'espère, compris...
    Merci ;)
  • Eddy58Eddy58 Membre
    20:22 modifié #6
    En effet, il faut tester la tableview : :)
    <br />- (int)numberOfRowsInTableView:(NSTableView *)aTableView<br />{	<br />&nbsp; &nbsp;  if (aTableView==tableView1)<br />&nbsp; &nbsp;  {<br />	return [recordsBalise count];<br />&nbsp; &nbsp;  }<br />&nbsp; &nbsp;  if (aTableView==tableView2)<br />&nbsp; &nbsp;  {<br />     return [recordsBalise2 count];<br />&nbsp; &nbsp;  }<br />}<br /><br />- (id)tableView:(NSTableView *)aTableView<br />      objectValueForTableColumn:(NSTableColumn *)aTableColumn<br />      row:(int)rowIndex<br />{<br />	<br />    id theRecord, theValue;<br />&nbsp; &nbsp; id theRecord2, theValue2;<br /><br />&nbsp; &nbsp; if (aTableView==tableView1)<br />&nbsp; &nbsp; {<br />    theRecord = [recordsBalise objectAtIndex:rowIndex];<br />    theValue = [theRecord objectForKey:[aTableColumn identifier]];<br />    return theValue;<br />&nbsp; &nbsp; }<br /><br />&nbsp; &nbsp;  if (aTableView==tableView2)<br />&nbsp; &nbsp;  {<br />    theRecord2 = [recordsBalise2 objectAtIndex:rowIndex];<br />    theValue2 = [theRecord2 objectForKey:[aTableColumn identifier]];<br />    return theValue2;<br />&nbsp; &nbsp;  }<br />}<br />
    

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