setBackgroundStyle dans NSTableCellView

skimpyskimpy Membre
05:05 modifié dans API AppKit #1
Bonjour,

J'essaie d'appliquer un style à  une NSTableCellView mais à  chaque fois que la ligne sur laquelle le style a été appliqué disparaà®t et réapparaà®t du cadre de la NSTableView (view-based), le style disparaà®t.

J'ai défini dans la méthode du delegate tableViewSelectionDidChange: l'appel suivant :

<br />- (void)tableViewSelectionDidChange:(NSNotification *)aNotification<br />{&nbsp; &nbsp; <br />&nbsp; &nbsp; NSTableCellView *currentCellView = [[myTableView rowViewAtRow:[myTableView selectedRow] makeIfNecessary:YES] viewAtColumn:0];<br />&nbsp; &nbsp; [currentCellView setBackgroundStyle:NSBackgroundStyleLowered];<br /><br />}<br />

A chaque fois que je change de ligne, le style est bien appliqué ; mais dès que je scrolle et que je fais disparaà®tre et réapparaà®tre la ligne (qui reste sélectionnée), le style a disparu.
Est-ce que vous auriez une idée du problème ?

Merci

Philippe

Réponses

  • Je pense que tu devrais essayer d'implémenter ton style dans la methode
    <br />
    (void)tableViewNSTableView *)tableView willDisplayCellid)cell forTableColumnNSTableColumn *)tableColumn rowint)row<br />
    {<br />
    




    ou dans la methode


    <br />
    - (id)tableViewNSTableView *)aTableView objectValueForTableColumnNSTableColumn *)aTableColumn rowNSInteger)rowIndex<br />
    




    parce qu'à  chaque fois que la cellule apparait à  l'ecran ces methodes sont appelées pour afficher le contenu, qui n'est pas caché. Donc le style est effacé quand la cellule disparaà®t et réapparaà®t
  • Ou dans une custom cell, dans la method suivante pour customizer +++ (icône, plusieurs lignes, différents attributs, le tout sous conditions : par exemple isHighlighted) :
    <br />
    - (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView<br />
    {<br />
       NSFont *font = [self isHighlighted] ? [NSFont boldSystemFontOfSize:12.0] : [NSFont systemFontOfSize:12.0];<br />
       [self setFont:font];<br />
       NSColor *color = [self isHighlighted] ? [NSColor redColor] : [NSColor blackColor];<br />
       [self setTextColor:color];<br />
       [super drawWithFrame:cellFrame inView:controlView];<br />
    }<br />
    
Connectez-vous ou Inscrivez-vous pour répondre.