2010-03-15 4 views
0

J'ajoute une sous-vue d'image à un UITableViewController avec une table groupée. Une fois que j'ai ajouté la sous-vue de l'image, je peux voir les en-têtes de la table sur le dessus de l'image, mais les cellules sont dessinées derrière l'image.iphone SDK: Comment ajouter une sous-vue d'image à UITableViewController et toujours voir les cellules?

Y a-t-il autre chose que je dois faire pour m'assurer que les cellules du tableau apparaissent au-dessus de l'image de fond? Voici le code que je utilise dans de la viewDidLoad la UITableViewControlle:

CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 959.0f); 
UIImageView *backImageView = [[UIImageView alloc] initWithFrame:myImageRect]; 
[backImageView setImage:[UIImage imageNamed:@"somebackground.png"]]; 
[self.view addSubview:backImageView]; 
[self.view sendSubviewToBack:backImageView]; 
[backImageView release]; 

Je me rends compte que comme une alternative que je pourrais simplement créer une vue composite et déposez-le tableview sur lui plutôt que de ce que je suis en train de faire ici . S'il n'y a pas d'autre solution, je le ferai, mais je préférerais utiliser l'approche que j'essaie si cela est possible.

Répondre

0

Il semble que UITableView réorganise souvent le zorder des vues lors de l'actualisation. Vous devez donc gérer manuellement la réinitialisation de la zorder sur les événements de table, tels que l'insertion/la suppression/la mise à jour de lignes.

2

Il s'agit d'une vue de table groupée. À partir de la pomme docs:

The grouped style of table view provides a default background color and a default background view for all cells. 

Cela signifie qu'une vue d'image par défaut est insérée derrière votre table. Vous voulez remplacer par votre propre point de vue, comme ceci:

CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 959.0f); 
UIImageView *backImageView = [[UIImageView alloc] initWithFrame:myImageRect]; 
[backImageView setImage:[UIImage imageNamed:@"somebackground.png"]]; 
self.tableView.backgroundView = backImageView; 

Cette remplace l'autre backgroundView avec votre propre. Sinon, lorsque la vue de la table est à nouveau disposée, cette autre image d'arrière-plan se superpose à la vôtre.

Questions connexes