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];
6 Réponses :
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row % 2) {
cell.backgroundColor = [UIColor yellowColor];
} else {
cell.backgroundColor = [UIColor redColor];
}
}
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. I>
... ce qui pour moi est davantage de ne pas définir de contenu dans WilldisPlayCell plutôt que le contraire
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. P>
Cette question s'applique également aux utilitaires sur mesure / sous-classée.
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;
}
Pour quelqu'un d'autre qui pourrait trébucher sur ceci et veut définir leur utableviewcell code> sur un modèle
Cela a fonctionné pour moi:
cell.contentView.backgroundColor = [UIColor darkGreyColor];
Pour toutes les lignes de la même couleur pour 2 couleurs p>
La réponse est juste Cell.backgroundColor ... bien sûr lorsque vous êtes à l'intérieur d'une classe de cellules b>, 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 B> dans Storyboard et ce serait sur la couleur de votre cellule !!!