web-dev-qa-db-fra.com

Changer la couleur sur la coche dans UITableView

Quelqu'un pourrait-il avoir la gentillesse de me montrer comment changer la couleur de la coche dans UITableView?

J'ai cherché mais ne semble pas le faire fonctionner.

À votre santé

54
PeterK

Apple ne fournit pas de moyen public de modifier la couleur de la coche, vous devrez donc le faire avec une image.

C'est très simple, il suffit de définir la propriété accesoryView de la cellule sur un UIImageView contenant une coche de la bonne couleur.

Cela ressemblera à ceci:

UIImageView *checkmark = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"coloredCheckmark.png"]];
cell.accessoryView = checkmark;
[checkmark release];

Prendre plaisir!

42
Andrew Zimmer

Étant donné que le SDK iOS a changé depuis la réponse acceptée, je pensais que je mettrais à jour avec une nouvelle réponse.

Vous pouvez en fait changer la couleur de la coche dans un UITableViewCell en ajustant la propriété tintColor du UITableViewCell.

Vous pouvez également définir un proxy d'apparence pour toutes les UITableViewCells afin que TOUTES les instances aient une couleur de teinte spécifique, sauf indication contraire.

[[UITableViewCell appearance] setTintColor:[UIColor redColor]];
200
nvrtd frst

Si vous recherchez une version Swift:

Directement sur la cellule

Par exemple dans tableView(_:,cellForRowAtIndexPath:)

cell.tintColor = UIColor.redColor()

Utilisation du protocole d'apparence

UITableViewCell.appearance().tintColor = UIColor.redColor()
31
mokagio

Les éléments suivants ont fonctionné pour moi dans iOS 7.

[self.tableView setTintColor:[UIColor someColor]];
29
Vinicius Souza

Cette image montre comment procéder dans les story-boards. La couleur de la teinte est la couleur de la coche.

enter image description here

15
kalan

J'ai trouvé que la réponse d'igraczech est généralement correcte, mais avec iOS 6 ou version ultérieure, vous pouvez simplement définir la couleur de la teinte de la table entière et les éléments par défaut hériteront.

[self.tableView setTintColor:[UIColor someColor]];

Cela a fonctionné pour moi et m'a permis de colorier la coche.

13
Bill Burgess

À partir d'iOS 7, vous pouvez définir la couleur de teinte de la vue de votre contrôleur de vue afin que ce colore de teinte soit propagé à toutes ses vues enfant. Ainsi, pour définir la coche de votre UITableViewCell en couleur violette (par exemple), dans votre méthode viewWillAppear, vous devez:

[self.view setTintColor:[UIColor purpleColor]];
8
Raunak
 UITableViewCell *cell=(UITableViewCell*)[tableView dequeueReusableCellWithIdentifier:@"CellIdentifier" forIndexPath:indexPath];
cell.tintColor=UIColor.whiteColor;
return cell;
4
Raviteja_DevObal

UIAccessoryTypeCheckmark (côté droit) hérite de la couleur d'arrière-plan de sa vue de table.

self.tableView.backgroundColor = [UIColor clearColor];
3
igraczech

J'ai toujours utilisé ce moyen simple:

UITableViewCell *cell = ...;
cell.tintColor = [UIColor greenColor];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
2
Evsenev
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
HNCustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"HNCustomTableViewCell" forIndexPath:indexPath];
cell.tintColor = [UIColor colorWithRed:0.99 green:0.74 blue:0.10 alpha:1.0];
return cell;
}

Ça marche pour moi.

2
Antony Wong
#import "UIImage+Color.h"

UIImage *image = [[UIImage imageNamed:@"ic_check_black_24dp.png"] changeColor:CLR_BUY];
UIImageView *checkmark = [[UIImageView alloc] initWithImage:image];
cell.accessoryView = checkmark;
2
Gank

Les réponses ci-dessus sont toutes excellentes. Mais si vous voulez le faire globalement, faites

UITableViewCell.appearance().tintColor = .green

Joli petit truc :)

1

Vous n'avez pas besoin d'utiliser votre propre image, vous pouvez simplement la changer dans votre vue qui s'est chargée avec le code suivant.

[self.tableView setTintColor:[UIColor colorWithRed:250/255.0 green:223/255.0 blue:6/255.0 alpha:1]]

À votre santé!

1
Ronaldoh1

Swift 3.1, iOS 9 +

if #available(iOS 9.0, *) {
            UIImageView.appearance(whenContainedInInstancesOf: [UITableViewCell.self]).tintColor = UIColor.themeTint //add your color here 
        } else {
            // Fallback on earlier versions
        }

Result

0
Nitesh Borad