2010-05-12 6 views
1

J'ai essayé tout le chemin mais je n'ai pas réussi à définir backgroundColor de TableView. le paramètre tableView.backgroundColor et/ou cell.backgroundColor à clearColor ne fonctionnait pas lorsque le contrôleur de vue parent était UIViewContoller.Comment définir la couleur d'arrière-plan de tableView

Ma structure de fichier nib est

FileOwner 
View 
UITableView 

(Note: i mis le TableView à l'article groupedTable)

Première tentative, j'ai créé le UIView dans le code viewDidLoad

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 160, 300)] autorelease; 
[view setBackgroundColor:UIColor blueColor]; // color it just to see if it is created at the right place 
[self.tableView sendSubViewToBack:view]; 

Il fonctionne mais il cache le contenu de la cellule. Je suis en mesure de voir le contenu de l'en-tête mais pas le contenu de la cellule. (Mais quand je change la coordonnée de vue (0150160300) alors je suis en mesure de voir le contenu de la cellule, mais il lâche la backgroundColor de tableview.

Deuxième tentative, j'ai créé le imageView

View 
ImageView 
UITableView 

et régler la self.tableView.backgroundColor = [UIColor clearColor]; mais ne fonctionne pas

je googlé, mais n'a pas la réponse pacifique

+1

Y at-il une réponse à cette question? – Caipivara

Répondre

3

Cela a toujours fonctionné pour moi:..

UITableView *tableView = [[UITableView alloc] initWithFrame:tableFrame style:UITableViewStylePlain]; 
tableView.backgroundColor = [UIColor redColor]; 
[parentView addSubview:tableView]; 

Assurez-vous que tableView n'est pas nul, n'est pas masqué, possède l'image correcte et qu'il a été ajouté à la vue parent correcte.

5

Un UITableView avec le style groupé utilise une vue d'arrière-plan. Pour se débarrasser de la vue de fond et de laisser le spectacle de couleur de fond, essayez une des opérations suivantes:

tableView.backgroundView = nil; 
tableView.backgroundView = [[[UIView alloc] init] autorelease]; 

Après cela, vous devriez être en mesure de définir la couleur d'arrière-plan normalement:

tableView.backgroundColor = [UIColor redColor]; 

BTW, seule une vue peut être le parent/superview d'une autre vue, et un contrôleur de vue n'est pas une vue.

+0

Merci drawonward, cela fonctionne. Il a fallu plusieurs heures pour moi et beaucoup de googles. – Praveen

+1

'self.tableview.backgroundView = nil' a fonctionné pour moi dans 6.0.x – Intentss

0
UIView* backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.bounds.size.width, self.tableView.bounds.size.height)]; 
[backgroundView setBackgroundColor:[UIColor redColor]]; 
[self.tableView setBackgroundView:backgroundView]; 
2

Version Swift

let backgroundView = UIView(frame: CGRect(x: 0, y: 0, width: self.tableView.bounds.size.width, height: self.tableView.bounds.size.height)) 
    backgroundView.backgroundColor = UIColor.redColor() 
    self.tableView.backgroundView = backgroundView 
Questions connexes