2010-02-16 7 views
2

J'ai essayé plusieurs façons de mettre l'image de fond d'une cellule de tableau non sélectionné, mais sans succès:background image Réglage des cellules vue de table personnalisé

1- In IB setting the image field 
2- cell.contentView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"list.png"]]; 
3- cell.imageView.image = [UIImage imageNamed:@"list_selected.png"]; 

Tous semblent échouer. Le paramètre d'image pour la cellule sélectionnée fonctionne, mais pas pour une cellule non sélectionnée. Quelqu'un at-il une idée de ce qui pourrait se passer ici?

Merci

Répondre

19

Essayez de régler le backgroundView à une imageView de l'image.

Exemple de code de Jason Moore (avec correction de TomH):

cell.backgroundView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"foo.png"]] autorelease]; 
+0

gerry peut vous donner s'il vous plaît quelques exemples de code. Merci beaucoup. – msk

+2

cell.backgroundImage = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @ "foo.png"]]; –

+1

Je crois que ce qui précède va fuir - ajouter une autorelease à la fin – TomH

1

essayer de faire ceci:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:DateCellIdentifier]; 
     if (cell == nil) { 
      cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:DateCellIdentifier] autorelease] 
      UIImageView* img = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"gradient.png"]]; 
      [cell setBackgroundView:img]; 
      [img release]; 
     } 
     cell.textLabel.text = @"Text"; 
} 
+0

Merci pour la réponse, Gaurav! J'utilise une cellule construite sur mesure pour la vue de la table. J'ai essayé votre code ci-dessus tel quel, et en mettant le code de réglage de l'image d'arrière-plan dans le constructeur de la classe de contrôleur de cellule personnalisée, mais toujours en vain. – msk

+0

poster votre code ici, de sorte que je peux regarder dans le. –

2

J'ai fait cela en utilisant la méthode UITableViewDelegate suivante et le réglage de la cellule. Propriété backgroundColor. Il est appelé dernier, juste avant la cellule est en fait tiré sur l'écran:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
if (indexPath.row%2) 
    cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"TableCell-BG-Dark.png"]]; 
else 
    cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"TableCell-BG-Light.png"]]; 

}

Et oui, j'utilise une sous-classe personnalisée de UITableViewCell.

+0

Vous êtes un génie! – Zepplock

0

J'ai aussi eu des problèmes à essayer de changer la couleur de fond des cellules, i fini par sous-classement de la cellule pour des raisons différentes, ceci est mon arrière-plan cellulaire code alternance:

if (indexPath.row % 2 == 0) { 
    cell.contentView.backgroundColor = [UIColor colorWithWhite:230.0/255 alpha:1]; 
} else { 
    cell.contentView.backgroundColor = [UIColor colorWithWhite:242.0/255 alpha:1]; 
} 
+0

note que cela semble fonctionner de manière fiable uniquement avec une cellule personnalisée, pas le stock. Dans la cellule de stockage, l'arrière-plan s'applique toujours, mais toutes les étiquettes ont leur arrière-plan défini sur blanc: –