9
votes

Définir la couleur de fond d'Uitabiliewcell

J'ai regardé autour de vous pour trouver une solution pour régler la couleur d'arrière-plan de l'accessoryview à la même couleur de fond que la même couleur de fond que celle des cellules de contenu.

cell.contentView.superView.backgroundColor = [UIColor redColor];


1 commentaires

La réponse est juste Cell.backgroundColor ... bien sûr lorsque vous êtes à l'intérieur d'une classe de cellules , c'est juste auto.backcolor. Mais soyez conscient du contenu séparéview, où vous avez peut-être défini une couleur BG par défaut dans Storyboard et ce serait sur la couleur de votre cellule !!!


6 Réponses :


28
votes
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row % 2) {
        cell.backgroundColor = [UIColor yellowColor];
    } else {
        cell.backgroundColor = [UIColor redColor];    
    }
}

2 commentaires

Il y a une jolie explication cryptique ici qui va: ... Si le délégué choisit de mettre en œuvre cette méthode, il peut apporter des modifications de dernière minute à l'objet cellulaire avant qu'elle ne soit affichée. Avec cette méthode, le délégué ne devrait modifier que les propriétés basées sur l'État définies plus tôt par la vue Table de la table, telles que la sélection et la couleur de fond, et non du contenu.


... ce qui pour moi est davantage de ne pas définir de contenu dans WilldisPlayCell plutôt que le contraire



-1
votes

La meilleure option pour avoir des arrière-plans différents et ce qui ne serait probablement pas de faire votre propre implémentation de TableViewCell, vous pouvez placer la logique pour montrer tout ce que vous voulez basé sur le contenu ou l'index, etc.


1 commentaires

Cette question s'applique également aux utilitaires sur mesure / sous-classée.



19
votes

J'ai eu du mal avec celui-ci depuis un peu de temps et j'ai eu recours à une image personnalisée avec l'accessoire. Mais je viens de trouver cette solution qui fonctionne bien et ne nécessite pas d'image personnalisée. L'astuce consiste à modifier la couleur de l'arrière-plan de la cellule et non l'arrière-planColor.

HappyCell.h
@interface HappyCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UILabel *mainLabel;
etc...
@end

HappyCell.m
@implementation HappyCell

-(id)initWithStyle:(UITableViewCellStyle)style
      reuseIdentifier:(NSString *)reuseIdentifier
    {
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self)
        {
        }
    return self;
    }

-(void)awakeFromNib
    {
    }

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
    {
    [super setSelected:selected animated:animated];

    if(selected)
        {
        self.backgroundColor = [UIColor redColor];
        .. other setup for selected cell
        }
    else
        {
        self.backgroundColor = [UIColor yellowColor];
        .. other setup for normal unselected cell
        }
    }

@end

// to help beginners.......
// in your table view class, you'd be doing this...

-(NSInteger)tableView:(UITableView *)tableView
      numberOfRowsInSection:(NSInteger)section
    {
    return yourDataArray.count;
    }

-(UITableViewCell *)tableView:(UITableView *)tv
      cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    NSInteger thisRow = indexPath.row;
    ContentsCell *cell = [tv
      dequeueReusableCellWithIdentifier:@"cellName"
      forIndexPath:indexPath]; 
    // "cellName" must be typed in on the cell, the storyboard
    // it's the "identifier", NOT NOT NOT the restorationID

    [cell setupForNumber: thisRow];
    cell.mainLabel.text = yourDataArray[ thisRow ][@"whatever"];
    cell.otherLabel.text = yourDataArray[ thisRow ][@"whatever"];

    return cell;
    }


0 commentaires

0
votes

Pour quelqu'un d'autre qui pourrait trébucher sur ceci et veut définir leur utableviewcell sur un modèle modèle ou texture plutôt qu'une couleur unie, vous pouvez le faire comme ça: xxx


0 commentaires

7
votes

Cela a fonctionné pour moi:

cell.contentView.backgroundColor = [UIColor darkGreyColor];


0 commentaires

2
votes

Pour toutes les lignes de la même couleur xxx

pour 2 couleurs xxx


0 commentaires