web-dev-qa-db-fra.com

UITableView définir la couleur d'arrière-plan

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?

enter image description here

19
Sp0tlight

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;
}
17
user3386109
  1. Ouvrir le storyboard
  2. Sélectionnez votre UITableView
  3. Inspecteur Open Attribute
  4. Faites défiler jusqu'à Afficher le groupe
  5. Sélectionnez la couleur d'arrière-plan pour l'ensemble du tableau.

enter image description here

39
Keenle

Essayez comme ceci: -

self.tableView.backgroundView.backgroundColor = [UIColor blueColor];
12
Hussain Shabbir

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()
        }
}
2
Irshad Qureshi

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()
}
2
ethemsulan

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()
    }
1
A.J. Hernandez

Vous devez définir backgroundView sur nil et backgroundColor sur la couleur souhaitée.

1
NRitH