[Résolu] Ajouter/supprimer des colonnes dans une TableView via les prefs.

VeillardVeillard Membre
novembre 2005 modifié dans API AppKit #1
Bonjour,

Je cherche un moyen simple pour afficher ou non des colonnes dans une TableView selon les préférences de l'utilisateur.
Pensez-vous que "removeTableColumn:" et "addTableColumn:" soit le plus approprié pour gérer l'affichage des colonnes ou existe-t-il un moyen plus élégant ???

Merci à  tous

Réponses

  • 10:48 modifié #2
    Pour ajouter et supprimer des colonnes par code, il n'y a pas beaucoup d'autres solutions ;)
  • VeillardVeillard Membre
    10:48 modifié #3
    D'ac, c'est ce que j'ai fait. Par contre comment fait-on pour vérifier si la Colonne existe déjà  ? Je sens qu'il faut passer par un NSEnumerator non ???
  • BruBru Membre
    10:48 modifié #4
    dans 1132252977:

    D'ac, c'est ce que j'ai fait. Par contre comment fait-on pour vérifier si la Colonne existe déjà  ? Je sens qu'il faut passer par un NSEnumerator non ???


    Si la méthode tableColumnWithIdentifier: de NSTableView te renvoie nil pour une colonne dont tu passes son identifier en paramètre, c'est qu'elle n'est pas dans la tableView.

    .
  • VeillardVeillard Membre
    10:48 modifié #5
    Merci Bru  ;)

    Par contre ça fonctionne à  moitié. Quand je veux insérer une colonne, j'ai :
    2005-11-17 20:24:34.095 Corail[2046] Exception raised during posting of notification.  Ignored.  exception: *** -[NSCFArray addObject:]: attempt to insert nil


    Le code est le suivant :
    - (void)displayColumnsInTableView:(NSTableView *)myTableView<br />{<br />&nbsp; &nbsp; NSUserDefaults *defaults;<br />	defaults = [NSUserDefaults standardUserDefaults];<br />	<br />	if ([myTableView tableColumnWithIdentifier:@&quot;gaz&quot;] == nil)<br />	{	<br />		if ([[NSUserDefaults standardUserDefaults]boolForKey:@&quot;gaz&quot;] == YES)<br />			[myTableView addTableColumn:[myTableView tableColumnWithIdentifier:@&quot;gaz&quot;]];<br />	}<br />	<br />	else if ([myTableView tableColumnWithIdentifier:@&quot;gaz&quot;] != nil)<br />	{<br />		if ([[NSUserDefaults standardUserDefaults]boolForKey:@&quot;gaz&quot;] == NO)<br />			[myTableView removeTableColumn:[myTableView tableColumnWithIdentifier:@&quot;gaz&quot;]];<br />	}	<br /><br />	if ([myTableView tableColumnWithIdentifier:@&quot;rebreather&quot;] == nil)<br />	{	<br />		if ([[NSUserDefaults standardUserDefaults]boolForKey:@&quot;rebreather&quot;] == YES)<br />			[myTableView addTableColumn:[myTableView tableColumnWithIdentifier:@&quot;rebreather&quot;]];<br />	}<br />	<br />	else if ([myTableView tableColumnWithIdentifier:@&quot;rebreather&quot;] != nil)<br />	{<br />		if ([[NSUserDefaults standardUserDefaults]boolForKey:@&quot;rebreather&quot;] == NO)<br />			[myTableView removeTableColumn:[myTableView tableColumnWithIdentifier:@&quot;rebreather&quot;]];<br />	}	<br />}<br />
    


    Tant que j'y suis, j'aimerais afficher à  nouveau les colonnes à  l'emplacement où elles étaient et non à  la fin.

    Bref, je cherche à  faire une reconfiguration dynamique de ma tableView.
  • BruBru Membre
    10:48 modifié #6
    dans 1132255806:

    - (void)displayColumnsInTableView:(NSTableView *)myTableView<br />{<br />    NSUserDefaults *defaults;<br />	defaults = [NSUserDefaults standardUserDefaults];<br />	<br />	if ([myTableView tableColumnWithIdentifier:@&quot;gaz&quot;] == nil)<br />	{	<br />		if ([[NSUserDefaults standardUserDefaults]boolForKey:@&quot;gaz&quot;] == YES)<br />			[myTableView addTableColumn:[myTableView tableColumnWithIdentifier:@&quot;gaz&quot;]];<br />	}<br />
    



    Ne vois-tu pas l'erreur ?
    Dans le if, tu testes l'absence de la colonne @gaz (car tu testes à  nil).
    Mais, 2 lignes plus bas, dans le bloc du if, tu tentes d'insérer dans ta tableView, la colonne @gaz provenant de ta tableView... Puisque on sait que ça renvoie nil, tu fais un addTableColumn avec nil !
    D'où le plantage.

    .
  • VeillardVeillard Membre
    10:48 modifié #7
    Je pensais justement qu'on pouvait afficher ou masquer la colonne par cette méthode. En réalité elle existe bien dans mon nib mais je veux l'afficher que dans certaines conditions. Peut-être faut-il que je m'y prenne autrement...
  • BruBru Membre
    10:48 modifié #8
    Pour "masquer" une colonne, il faut que tu la retires (removeTableColumn:) de ta tableView.
    Pour la réafficher, il faut la "réinsérer" dans la tableView (addTableColumn:).

    Bien sûr, pendant que la tableColumn est retirée de ta table, il faut la conserver quelque part (pour la réinsérer plus tard).

    Un exemple (sur une seule colonne dont l'identifier est @2, la tableView étant tb) :
    <br />{<br />    if (masquer==YES)<br />    {<br />        tcsav=[tb tableColumnWithIdentifier:@&quot;2&quot;];<br />        [tcsav retain];<br />        [tb removeTableColumn:tcsav];<br />    }<br /><br />    if (masquer==NO)<br />    {<br />        [tb addTableColumn:tcsav];<br />        [tcsav release];<br />    }<br />}<br />
    


    La colonne est sauvegardé dans une variable d'instance tcsav déclarée comme :
    [tt]NSTableColumn *tcsav;[/tt]
    dans l'interface de ma classe contrôleur (celle qui réalise la masquage/affichage de la colonne).

    A toi d'étoffer cette exemple pour gérer toutes les colonnes de ta tableView.

    .
  • BruBru Membre
    10:48 modifié #9
    Je m'aperçois que je n'ai pas répondu au sujet de la conservation de la position initiale de la colonne.

    Donc, je rajoute dans l'interface une variable d'instance pour mémoriser la position de la colonne avant de la retirer :
    [tt]int tcsavpos;[/tt]

    et ensuite :
    <br />{<br />    if (masquer==YES)<br />    {<br />        tcsav=[tb tableColumnWithIdentifier:@&quot;2&quot;];<br />        tcsavpos=[tb columnWithIdentifier:@&quot;2&quot;];<br />        [tcsav retain];<br />        [tb removeTableColumn:tcsav];<br />    }<br /><br />    if (masquer==NO)<br />    {<br />        [tb addTableColumn:tcsav];<br />        [tcsav release];<br />        [tb moveColumn:[tb columnWithIdentifier:@&quot;2&quot;] toColumn:tcsavpos];<br />    }<br />}<br />
    


    .
  • 10:48 modifié #10
    Voila comment je gère cela dans DVDTheque

    buildTableView
    Je lis dans les préférences les colonnes affichées, je vérifie les cases cochées correspondantes aux colonnes à  afficher ou à  effacer, si elle n'est pas cochée, je la supprime de la TableVew sinon je la rajoute en tant que dernière colonne afin de garder l'ordre des colonnes defini par l'utilisateur..

    addColumnFrom
    Cette routine construit toute les caractéristique de la colonne "theColumn" avec les paramètres passé dans le NSDictionary.

    - (void)buildTableView:(NSTableView *)aTableView
    {
    int i,j;
    NSEnumerator *e;
    id column;

    NSArray *cbArray=[NSArray arrayWithObjects:plCBReference,plCBTitle,plCBOriginalTitle,plCBCategory,plCBScreenFormat,
    plCBVideo,plCBMedia,plCBRuntime,plCBDate,plCBPurchaseDate,plCBAmountOfDVD,plCBAudience,
    plCBDVDFormat,plCBPrice,plCBBorrower,plCBRating,plCBDirector,nil];
    e = [[aTableView tableColumns] objectEnumerator];
        while ( (column = [e nextObject]) ) {[aTableView removeTableColumn:column];}

    NSDictionary *prefDictionary=[NSDictionary dictionaryWithDictionary:[prefs dictionaryForKey:@BNRPrefs]];
    if (nil!=prefDictionary)
    {
    NSString *parametersPath=[[NSBundle mainBundle] pathForResource:@listTableViewColumn.plist ofType:nil];
    NSArray *parametersArray=[NSArray arrayWithContentsOfFile:parametersPath];
    if (nil!=parametersArray)
    {
    NSArray *anArray=[NSArray arrayWithArray:[prefDictionary objectForKey:@ColumnsForPrintList]];
    if (nil!=anArray)
    {
    for (i=0;i!=[anArray count];i++)
    {
    for (j=0;j!=[cbArray count];j++)
    {
    if ([cbArray objectAtIndex:j] title] isEqualToString:[[anArray objectAtIndex:i] valueForKey:@&quot;Title&quot;)
    cbArray objectAtIndex:j] setState:NSOnState];<br /> }<br /> for (j=0;j!=[parametersArray count];j++)<br /> {<br /> NSMutableDictionary *aDictionary=[NSMutableDictionary dictionaryWithDictionary:[parametersArray objectAtIndex:j;

    NSString *theTitle=[NSString stringWithString:[aDictionary valueForKey:@headerTitle]];
    if ([theTitle isEqualToString:anArray objectAtIndex:i] valueForKey:@&quot;Title&quot;)
    {
    if (nil!=[[anArray objectAtIndex:i] valueForKey:@currentSize])
    [aDictionary setObject:[[anArray objectAtIndex:i] valueForKey:@currentSize] forKey:@currentSize];
    else
    [aDictionary setObject:[NSNumber numberWithInt:50] forKey:@currentSize];
    [self addColumnFrom:aDictionary toTableView:aTableView];
    }
    }
    }
    }
    }
    }
    }

    - (void)addColumnFrom:(NSDictionary *)theColumn toTableView:(NSTableView *)aTableView
    {
        NSTableColumn *column = nil;
    column = NSTableColumn alloc] initWithIdentifier:[theColumn valueForKey:@&quot;identifier&quot;;
    [column setEditable: theColumn valueForKey:@&quot;editable&quot;] boolValue;
        if ([[theColumn valueForKey:@resizable] boolValue])
    [column setResizingMask: NSTableColumnUserResizingMask];
    else
    [column setResizingMask: NSTableColumnNoResizing];
    [column setWidth: theColumn valueForKey:@&quot;currentSize&quot;] intValue;
    [column setMinWidth: theColumn valueForKey:@&quot;minSize&quot;] intValue;
    [column setMaxWidth: theColumn valueForKey:@&quot;maxSize&quot;] intValue;
    if (!theColumn valueForKey:@&quot;headerTitle&quot;] isEqualToString:[self readFromLocalize:@&quot;Icone&quot;)
    column headerCell] setStringValue:[theColumn valueForKey:@&quot;headerTitle&quot;;
    else
    column headerCell] setStringValue:@&quot; &quot;];<br /> [[column dataCell] setAlignment:[[theColumn valueForKey:@&quot;dataAlignment&quot;] intValue;
    column dataCell] setFont:[NSFont fontWithName:theFont size:fontSize;
    column headerCell] setAlignment:[[theColumn valueForKey:@&quot;headerAlignment&quot;] intValue;
    [aTableView addTableColumn: column];
    [column release];
    }
  • VeillardVeillard Membre
    10:48 modifié #11
    Merci à  tous  ;)

    @Bru :
    J'ai essayé. Ca fonctionne comme prévu pour supprimer la colonne mais quand je la rajoute, j'ai les messages d'erreur suivants :
    *** -[_NSBindingInfo setTableView:]: selector not recognized [self = 0x47b3600]
    Exception raised during posting of notification.  Ignored.  exception: *** -[_NSBindingInfo setTableView:]: selector not recognized [self = 0x47b3600]


    @SpiderIncognito:
    J'avais vu quelquechose se semblable là  :
    http://www.projectomega.org/article.php?lg=fr&php=oreilly_cocoa12&p=5
    Je voulais savoir si il n'y avait pas plus simple.
  • BruBru Membre
    10:48 modifié #12
    dans 1132303959:

    J'ai essayé. Ca fonctionne comme prévu pour supprimer la colonne mais quand je la rajoute, j'ai les messages d'erreur suivants :
    *** -[_NSBindingInfo setTableView:]: selector not recognized [self = 0x47b3600]
    Exception raised during posting of notification.  Ignored.  exception: *** -[_NSBindingInfo setTableView:]: selector not recognized [self = 0x47b3600]



    Ca sent l'utilisation des bindings sur ta tableView, non ?

    Dans ce cas, je ne vois pas trop quoi faire.
    C'est pour cela que je hais les bindings, car ils enferment le programmeur dans un carcan.

    .
  • VeillardVeillard Membre
    10:48 modifié #13
    J'utilise très peu les bindings. Je m'en sers uniquement pour enregistrer mes prefs dans le NSUserDefaultsController.
  • Eddy58Eddy58 Membre
    10:48 modifié #14
    As-tu vérifié que ta tableview et ses tablecolumns n'ont pas une de leur fonction binding cochée ? :o
  • VeillardVeillard Membre
    10:48 modifié #15
    C'est la première chose que j'ai faite => rien.
  • Eddy58Eddy58 Membre
    10:48 modifié #16
    Il y a forcément quelque chose qui interfère...As-tu essayé de désactiver provisoirement tes bindings préférences pour voir si ça faisait toujours le message d'erreur ? :o
  • VeillardVeillard Membre
    10:48 modifié #17
    J'ai supprimé le binding en relation avec la notification. Je n'ai plus le message d'erreur
    -[_NSBindingInfo setTableView:]: selector not recognized [self = 0x4787f30]


    Mais à  la place, j'ai toujours :
    Exception raised during posting of notification.  Ignored.  exception: *** -[NSCFArray addObject:]: attempt to insert nil

    avec le code de Bru qui fonctionne malgré tout (j'ai fait quelques tests).
    - (void)displayColumnsInTableView:(NSTableView *)myTableView<br />{<br />	NSTableColumn	*tabColSaved;<br />	int		tabColPosition;<br />	<br />	if ([[NSUserDefaults standardUserDefaults]boolForKey:@&quot;column gaz&quot;] == NO)<br />&nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; tabColSaved = [myTableView tableColumnWithIdentifier:@&quot;gaz&quot;];<br />&nbsp; &nbsp; &nbsp; &nbsp; tabColPosition = [myTableView columnWithIdentifier:@&quot;gaz&quot;];<br />&nbsp; &nbsp; &nbsp; &nbsp; [tabColSaved retain];<br />&nbsp; &nbsp; &nbsp; &nbsp; [myTableView removeTableColumn:tabColSaved];<br />&nbsp; &nbsp; }<br /><br />&nbsp; &nbsp; else if ([[NSUserDefaults standardUserDefaults]boolForKey:@&quot;column gaz&quot;] == YES &amp;&amp; [myTableView tableColumnWithIdentifier:@&quot;gaz&quot;] == nil)<br />&nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; [myTableView addTableColumn:tabColSaved];<br />&nbsp; &nbsp; &nbsp; &nbsp; [tabColSaved release];<br />&nbsp; &nbsp; &nbsp; &nbsp; [myTableView moveColumn:[myTableView columnWithIdentifier:@&quot;gaz&quot;] toColumn:tabColPosition];<br />&nbsp; &nbsp; }<br />}<br />
    
  • VeillardVeillard Membre
    10:48 modifié #18
    Bon après de multiples essais ça marche... à  moitié.
    L'insertion et la suppression fonctionnent. J'ai fait ceci :
    - (void)displayColumnsInTableView:(NSTableView *)myTableView<br />{<br />NSTableColumn *tabColSaved;<br />int tabColPosition;<br /><br />tabColSaved = [[[NSTableColumn alloc] initWithIdentifier:@&quot;gaz&quot;] autorelease];<br /><br />if ([[NSUserDefaults standardUserDefaults]boolForKey:@&quot;column gaz&quot;] == NO)<br />&nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; tabColSaved = [myTableView tableColumnWithIdentifier:@&quot;gaz&quot;];<br />&nbsp; &nbsp; &nbsp; &nbsp; tabColPosition = [myTableView columnWithIdentifier:@&quot;gaz&quot;];<br />&nbsp; &nbsp; &nbsp; &nbsp; [myTableView removeTableColumn:tabColSaved];<br />&nbsp; &nbsp; }<br /><br />&nbsp; &nbsp; else if ([[NSUserDefaults standardUserDefaults]boolForKey:@&quot;column gaz&quot;] == YES &amp;&amp; [myTableView tableColumnWithIdentifier:@&quot;gaz&quot;] == nil)<br />&nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; [myTableView addTableColumn:tabColSaved];<br />&nbsp; &nbsp; &nbsp; &nbsp; [myTableView moveColumn:[myTableView columnWithIdentifier:@&quot;gaz&quot;] toColumn:tabColPosition];<br />&nbsp; &nbsp; }<br />}
    


    J'ai supprimé les Retain/Release et mis un alloc initWithIdentifier à  la place.

    Par contre, l'en-tête s'appelle désormais "Field" et la largeur de la colonne a aussi changé. Je continue...
  • BruBru Membre
    novembre 2005 modifié #19
    Favouille,

    T'as vraiment pas compris le principe de masquage/affichage d'une colonne en la retirant/réinsérant dans sa tableView.

    Je te donne le code que j'utilise (et qui fonctionne) dans mes applis.

    Dans le .h de la classe contrôleur :
    <br />#import &lt;Cocoa/Cocoa.h&gt;<br /><br />@interface Controleur : NSObject<br />{<br />    IBOutlet id tb;<br />    NSArray *_cols;<br />}<br /><br />- (void)setColumn:(NSString *)identifier visible:(BOOL)visible;<br /><br />@end<br />
    


    Dans le .m :
    <br />- (void)setColumn:(NSString *)identifier visible:(BOOL)visible<br />{<br />    NSTableColumn *tableColumn;<br />    int index;<br /><br />    // la première fois qu&#39;on utilise cette méthode : on mémorise les colonnes et leur position.<br />    if (_cols==nil) _cols=[[NSArray alloc] initWithArray:[tb tableColumns]];<br /><br />    tableColumn=[tb tableColumnWithIdentifier:identifier];<br /><br />    // &quot;masquage&quot; de la colonne si elle n&#39;est pas déjà  masquée.<br />    if (visible==NO &amp;&amp; tableColumn!=nil)<br />    {<br />        [tb removeTableColumn:tableColumn];<br />    }<br /><br />    // visualisation de la colonne si elle est masquée.<br />    if (visible==YES &amp;&amp; tableColumn==nil)<br />    {<br />        // on recherche la colonne mémorisée dans le tableau _cols.<br />        index=[_cols count]-1;<br />        while (index&gt;=0 &amp;&amp; ![[[_cols objectAtIndex:index] identifier] isEqual:identifier]) index--;<br /><br />        // colonne trouvée : on la remet dans la tableView, et on la déplace à  sa bonne place.<br />        if (index&gt;=0)<br />        {<br />            [tb addTableColumn:[_cols objectAtIndex:index]];<br />            [tb moveColumn:[tb columnWithIdentifier:identifier] toColumn:index];<br />        }<br />    }<br />}<br />
    


    tb est l'outlet qui pointe sur la tableView.

    L'emploi est simple, il suffit d'appeler la méthode pour afficher ou masquer la colonne dont l'identifiant est passé en paramètre :
    [tt][self setColumn:@gaz visible:YES];[/tt] pour afficher la colonne gaz. Mettre NO pour la masquer.

    A toi d'appeller cette méthode pour chaque préférence de chacune des colonnes (dans une boucle). Il faut utiliser cette boucle après le lancement de l'appli (dans le awakeFrmNib par exemple), puis ensuite à  chaque fois que l'utilisateur modifie les préférences.

    .
  • VeillardVeillard Membre
    novembre 2005 modifié #20
    Meri Bru, encore une fois je te dois une fière chandelle  o:)

    dans 1132428035:

    T'as vraiment pas compris le principe de masquage/affichage d'une colonne en la retirant/réinsérant dans sa tableView.


    C'est vrai qu'à  force de chercher de la doc sur le web, j'ai tendance à  me mélanger les pinceaux.

    Ton code fonctionne parfaitement, j'en ai profité pour me libérer de ce carcan de binding dans cette partie de mon appli. Comme tu peux le voir, j'ai pas mal de colonnes à  gérer ce qui fait que j'ai un
    -[NSCFArray insertObject:atIndex:]: index (7) beyond bounds (1)
    dans le cas où je veux ajouter une colonne alors qu'il manque la ou les précédentes. Je vais jouer sur l'"index".

    [img]http://ch.veillard.free.fr/Image 1.png[/img]
  • BruBru Membre
    10:48 modifié #21
    dans 1132481689:

    Comme tu peux le voir, j'ai pas mal de colonnes à  gérer ce qui fait que j'ai un
    -[NSCFArray insertObject:atIndex:]: index (7) beyond bounds (1)
    dans le cas où je veux ajouter une colonne alors qu'il manque la ou les précédentes. Je vais jouer sur l'"index".


    Lorsque j'ai recopié mon code sur OC, je l'ai nettoyé et j'ai ajouté des commentaires.
    Mais, j'ai fait sauter une ligne très importante :
    [code]if (index>=tb tableColumns] count]) index=[[tb tableColumns] count]-1;[/code]<br />à  mettre entre le [tt]if (index&gt;=0) {[/tt] et le [tt][tb addTableColumn:[_cols objectAtIndex:index;[/tt]. 1000 excuses.

    .
  • VeillardVeillard Membre
    10:48 modifié #22
    Encore merci Bru, ça marche !!! :brule: :brule: :brule:
  • BruBru Membre
    10:48 modifié #23
    dans 1132486076:

    Encore merci Bru, ça marche !!! :brule: :brule: :brule:


    Tant mieux si ça marche, mais c'est pas à  cause de moi...

    J'ai dû chopé la grippe aviaire, et mon remède à  base de boisson chaude fortement améliorée d'un liquide dont le degré d'alcool n'est pas en dessous de 40 font que ma cervelle patauge un peu...

    Voici le bon code :
    <br />- (void)setColumn:(NSString *)identifier visible:(BOOL)visible<br />{<br />&nbsp; &nbsp; NSTableColumn *tableColumn;<br />&nbsp; &nbsp; int index, moveIndex;<br /><br />&nbsp; &nbsp; // la première fois qu&#39;on utilise cette méthode : on mémorise les colonnes et leur position.<br />&nbsp; &nbsp; if (_cols==nil) _cols=[[NSArray alloc] initWithArray:[tb tableColumns]];<br /><br />&nbsp; &nbsp; // &quot;masquage&quot; de la colonne si elle n&#39;est pas déjà  masquée.<br />&nbsp; &nbsp; tableColumn=[tb tableColumnWithIdentifier:identifier];<br />&nbsp; &nbsp; if (visible==NO &amp;&amp; tableColumn!=nil)<br />&nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; [tb removeTableColumn:tableColumn];<br />&nbsp; &nbsp; }<br /><br />&nbsp; &nbsp; // visualisation de la colonne si elle est masquée.<br />&nbsp; &nbsp; if (visible==YES &amp;&amp; tableColumn==nil)<br />&nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; // on recherche la colonne mémorisée dans le tableau _cols.<br />&nbsp; &nbsp; &nbsp; &nbsp; index=[_cols count]-1;<br />&nbsp; &nbsp; &nbsp; &nbsp; while (index&gt;=0 &amp;&amp; ![[[_cols objectAtIndex:index] identifier] isEqual:identifier]) index--;<br />&nbsp; &nbsp; &nbsp; &nbsp; if (index&gt;=0)<br />&nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; moveIndex=-1;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (index&lt;[[tb tableColumns] count]) moveIndex=index;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [tb addTableColumn:[_cols objectAtIndex:index]];<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (moveIndex&gt;=0) [tb moveColumn:[tb columnWithIdentifier:identifier] toColumn:moveIndex];<br />&nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; }<br />}<br />
    


    .
  • wiskywisky Membre
    10:48 modifié #24
    Salut,
    J'ai ajouter la posibilité d'afficher et masquer les colonnes. J'ai codé dans le même esprit que ce que tu montre Bru. Ca fonctionne mais quand je fait appel à  le fonction d'affichage ou masquage cela ne fait rien jusqu'au relancement de l'appli!

    Comment faire pour faire disparaà®tre une colonne après l'avoir supprimé avec[tt]removeTableColumn:[/tt]
  • BruBru Membre
    10:48 modifié #25
    dans 1138660407:

    Salut,
    J'ai ajouter la posibilité d'afficher et masquer les colonnes. J'ai codé dans le même esprit que ce que tu montre Bru. Ca fonctionne mais quand je fait appel à  le fonction d'affichage ou masquage cela ne fait rien jusqu'au relancement de l'appli!

    Comment faire pour faire disparaà®tre une colonne après l'avoir supprimé avec[tt]removeTableColumn:[/tt]


    La méthode [tt]- (void)setColumn:(NSString *)identifier visible:(BOOL)visible[/tt] que tu cites fonctionne correctement pour afficher/masquer dynamiquement les colonnes.

    Je te joins un projet utilisant cette méthode. Le fait de cocher/décocher le bouton-option permet d'afficher/masquer en "live" la colonne correspondante.

    .

    [Fichier joint supprimé par l'administrateur]
  • wiskywisky Membre
    10:48 modifié #26
    Ca marche. <3 <3 <3 <3 <3 <br />Merci :D
Connectez-vous ou Inscrivez-vous pour répondre.