Multi-tableview

13»

Réponses

  • ClicCoolClicCool Membre
    05:39 modifié #62
    Salut Oxitan

    en fait indexOfSelectedItem te renvoie un index et pas un objet.
    Et setObject: forKey: attend un Objet, ou plus exactement un pointeur sur un objet.
    Comme tu envoies un entiers (index) à  la place du pointeur il te dit Attention "make pointer without a cast".
    S'il te mettait pas en garde ton soft essaierait d'acceder à  un objet ayant pour adresse la valeur de l'index ... pas glop.

    Donc il te faut récupérer ton index et "l'encapsuler" dans un objet comme un NSNumber ou une NSString que tu passes alors à  setObject: forKey: :)
  • muqaddarmuqaddar Administrateur
    05:39 modifié #63
    J'ai compris le principe, mais je vois pas pour écrire la syntaxe... :(
    NSString string with ?
  • BruBru Membre
    05:39 modifié #64
    dans 1101486999:

    J'ai compris le principe, mais je vois pas pour écrire la syntaxe... :(
    NSString string with ?


    Quelque chose du style :
    [tt][addDico setObject:[NSNumber numberWithInt:[newOriginePopup indexOfSelectedItem]] forKey:@origine];[/tt]
    ne devrait pas être trop mal...

    .
  • muqaddarmuqaddar Administrateur
    05:39 modifié #65
    Ouais mais si je le mets dans uen string ?
    NSString stringWith ?? ;)
  • ClicCoolClicCool Membre
    05:39 modifié #66
    [NSString stringWithFormat:@%d,[newOriginePopup indexOfSelectedItem]]

    t'as un bon article sur les formats par ICI ;D
  • muqaddarmuqaddar Administrateur
    05:39 modifié #67
    Merci ClicCool...
    ça doit être parce que c'est la fin de semaine.
    :(
  • muqaddarmuqaddar Administrateur
    05:39 modifié #68
    Coucou,

    Après quelques recherche, je n'ai rien trouvé de concluant pour sélectionner une ligne de mon tableau qd je lance l'appli.
    Il y a bien : [groupsTable selectRowIndexes:0 byExtendingSelection:NO];
    mais il faut un indexSet... moi je veux juste indiquer un numéro de ligne comme "0".... Bizarre qu'il n'y ait pas selectRow tout simplement pour une tableView...
  • cbrandtcbrandt Membre
    05:39 modifié #69
    <br />[groupsTable selectRowIndexes: [NSIndexSet indexSetWithIndex: 0] byExtendingSelection:NO];<br />
    

    ;)
  • muqaddarmuqaddar Administrateur
    05:39 modifié #70
    Merci cbrandt.
    Je ne sais pas comment je me suis débrouillé car c'ets grosso-modo ce que j'avais tapé tout à  l'heure et j'avais eu une erreur de compil. ;-)
    Là  aucun pb.

    Tant que j'y suis, j'ai un autre soucis pour essayer de mettre en bold cette fameuse ligne.

    J'ai essayé :

    NSFont *txtFont = [NSFont boldSystemFontOfSize:11];
    NSDictionary *txtDict = [NSDictionary dictionaryWithObjectsAndKeys:txtFont, NSFontAttributeName, nil];
    NSAttributedString *attrStr = [[[NSAttributedString alloc] initWithString:[[groupsArray objectAtIndex:0] objectForKey:@groupName] attributes:txtDict] autorelease];

    Ensuite, je suis un peu perdu pour l'attribuer à  une cell.
    Je comptais faire cela dans ma méthode delegate de tableview...
    -(id)tableView:(NSTableView *)aTableView

    Mais p-e que ce n'est pas le bon endroit.
  • cbrandtcbrandt Membre
    05:39 modifié #71
    dans un projet j'ai utilisé tout simplement ça:

    <br />NSCell&nbsp; &nbsp; &nbsp;  *nameCell;<br />...<br />[nameCell setFont: [NSFont boldSystemFontOfSize: [NSFont smallSystemFontSize]]];<br />
    
  • muqaddarmuqaddar Administrateur
    05:39 modifié #72
    Merci cbrandt.

    Mais ce que je ne comprends pas, c'est comment définir nameCell comme la 1ère ligne et avec mon identifier pour la colonne...
    A partir de mon array ou de ma table ?

    J'ai essayé ça sans succès :
    NSCell* boldCell = [[[groupsArray objectAtIndex:0] objectForKey:@groupName] cell];
  • muqaddarmuqaddar Administrateur
    05:39 modifié #73
    Merci.
    En fait je voulais bolder que la première ligne.
    Alors, sous les conseils de renaud, j'ai fait comme ça :

    <br />	if ((rowIndex == 0)&amp;&amp;([[aTableColumn identifier] isEqualToString: @&quot;paysName&quot;]))<br />		return [[[NSAttributedString alloc] initWithString: [[paysArray objectAtIndex:rowIndex] objectForKey:[aTableColumn identifier]] attributes:[NSDictionary dictionaryWithObjectsAndKeys:[NSFont boldSystemFontOfSize: 11], NSFontAttributeName, nil]] autorelease];<br />	else<br />		return [[paysArray objectAtIndex:rowIndex] objectForKey:[aTableColumn identifier]];<br />
    
  • novembre 2004 modifié #74
    Pour ne mettre qu'une seule cellule en gras (et non un colonne comme ton code le fait), le plus simple est de tester la position de la cellule au moment du objectValue:forTableColumn:atRow: et de renvoyer une NSAttributedString, même si niveau code ça paraà®t lourd.

    Sinon pour ce que cbrand propose, il y a plus simple et surtout plus efficient, dans le awakeFromNib (mais ça suppose l'existence d'un IB outlet):
    [[[tableView tableColumnWithIdentifier:@&quot;ID column] dataCell] setFont:[NSFont boldSystemFontOfSize: [NSFont smallSystemFontSize]]];
    

    Le problème du code proposé par cbrandt est qu'il est appelé à  chaque fois que la table est mise à  jour. Alors qu'une seule fois suffit.

    EDIT: grilled, mais ça indique ou mettre le code de oxitan.
  • cbrandtcbrandt Membre
    05:39 modifié #75
    salut,

    dans 1101835140:

    Le problème du code proposé par cbrandt est qu'il est appelé à  chaque fois que la table est mise à  jour. Alors qu'une seule fois suffit.


    ben, mon exemple consistait à  ne mettre en gras que la ligne sélectionnée (c'est comme ça que j'avais compris le pb de oxitan, mais apparament j'étais à  côté), ce qui implique de le faire avant d'afficher la ligne, étant donné que la sélection peut changer et que la datacell est partagée par toutes les lignes. mais ma proposition n'est pas non plus forcément la meilleure... ;)

    maintenant, ce que dis renaud est bien sûr juste: si toutes les lignes ont les mêmes attributs, on ne les modifie qu'une fois, dans le awakeFromNib
    o:)
Connectez-vous ou Inscrivez-vous pour répondre.