3 votes

UIView derrière les cellules d'un UITableView

J'essaie d'insérer une vue derrière les cellules d'un uitableview mais je ne trouve pas le moyen de le faire correctement. Chaque fois que j'ajoute une subview à self.view ou self.tableview, elle passe au premier plan, même si j'utilise la méthode "sendSubviewToBack :" ... Quelqu'un a-t-il une idée sur la façon de le faire ?

PS : Je ne veux pas utiliser self.tableview.backgroundView car la vue est fixe.

Gracias

9voto

Marián Černý Points 1511

Je l'ai résolu en appelant [self.view sendSubviewToBack:self.myBackgroundView] sur tableView:willDisplayCell:forRowAtIndexPath: . Cela permettra de placer la vue derrière chaque cellule.

6voto

Mundi Points 33074

Ce que vous vivez est logique. Le site self.view d'un UITableView est en effet la vue de la table. Si vous insérez une vue secondaire, elle est insérée au-dessus de la vue tableau - et il n'y a aucun moyen de l'envoyer à l'arrière.

Solution 1

La solution la plus souple consiste à passer à un UIViewConntroller et implémentez vous-même le comportement de la vue de la table. Vous devez

  • insérer votre propre vue de table comme @property . Il s'agit maintenant d'une vue secondaire de self.view . Vous pouvez le faire en code ou en IB.
  • déclarer et mettre en œuvre le <UITableViewDelegate> y <UITableViewDatasource> protocoles
  • fixer le delegate y datasource des propriétés de la vue tableau pour self
  • Insérez d'autres vues secondaires à votre guise et mélangez-les comme vous le souhaitez.

Solution 2

Si vous voulez simplement afficher quelque chose derrière la tableView, vous pouvez utiliser la propriété de la table view. backgroundView . L'affichage se fera derrière les cellules, mais vous n'aurez qu'un contrôle limité sur la taille de la vue (ce que vous pourriez à nouveau résoudre en créant d'autres sous-vues de la vue d'arrière-plan). En outre, vous devez vous assurer que vos cellules sont transparentes.

0voto

J S Rodrigues Points 471
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index

avec l'index 0 amènera la vue à la position qui est la plus en arrière.

Il s'agit d'une méthode sur UIView. Depuis UITableView Inherits from UIScrollView : UIView : UIResponder : NSObject. Je pense que cela pourrait aider.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X