Je change la couleur d'arrière-plan des UITableViewCells dans la méthode tableView: cellForRowAtIndexPath
if(indexPath.row % 2 == 0){
cell.backgroundColor = ...
} else{
cell.backgroundColor = ...
}
Mais cela ne change que la couleur de la quantité de cellules spécifiée dans tableView: numberOfRowsInSection (Comme on le voit dans l'image ci-jointe, il y a des cellules blanches après les quatre premières)
Est-il possible de changer la couleur de toutes les cellules affichées à l'écran?
Si vous souhaitez que la couleur d'arrière-plan de la cellule continue à alterner, vous devez mentir sur le nombre de lignes du tableau. Plus précisément, dans tableView: numberOfRowsInSection, vous devez toujours renvoyer un nombre qui remplira l'écran, et dans tableView: cellForRowAtIndexPath, renvoyer une cellule vide pour les lignes situées au-delà de la fin de la table. Le code suivant montre comment procéder, en supposant que self.dataArray est un NSArray de NSStrings.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if ( self.dataArray.count < 10 )
return( 10 );
else
return( self.dataArray.count );
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SimpleCell"];
if ( indexPath.row % 2 == 0 )
cell.backgroundColor = [UIColor orangeColor];
else
cell.backgroundColor = [UIColor redColor];
if ( indexPath.row < self.dataArray.count )
cell.textLabel.text = self.dataArray[indexPath.row];
else
cell.textLabel.text = nil;
return cell;
}
Essayez comme ceci: -
self.tableView.backgroundView.backgroundColor = [UIColor blueColor];
Je l'ai utilisé pour colorer une cellule alternative dans une vue tabulaire
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,
forRowAtIndexPath indexPath: NSIndexPath) {
if (indexPath.row % 2 == 0)
{
cell.backgroundColor = UIColor.grayColor()
}
else
{
cell.backgroundColor = UIColor.whiteColor()
}
}
Dans Swift, vous pouvez changer la couleur d'arrière-plan de la vue de table ou vous pouvez définir l'image comme couleur d'arrière-plan de la vue de table comme ceci;
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.view.backgroundColor = UIColor(patternImage: UIImage(named: "background.png")!)
self.tableView.backgroundColor = UIColor.clearColor()
}
// change cell text color and background color
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
cell.backgroundColor = UIColor.clearColor()
}
Pour Swift
Grâce à @Irshad Qureshi, j'ai pu obtenir des couleurs d'arrière-plan alternées pour mes cellules prototypes en ajoutant les éléments suivants dans mon cellForRowAtIndexPath:
if (indexPath.row % 2 == 0)
{
cell!.backgroundColor = UIColor.groupTableViewBackgroundColor()
}
else
{
cell!.backgroundColor = UIColor.whiteColor()
}
Vous devez définir backgroundView
sur nil
et backgroundColor
sur la couleur souhaitée.