web-dev-qa-db-fra.com

Pied de page UITableView, Arrêtez de flotter sur le contenu

Je voudrais que mon pied de page UITableView cesse de flotter sur mon contenu, tout comme l'activité par défaut. Je veux que mon pied de page soit ... eh bien ... un pied de page. Toujours la dernière vue à afficher à la fin de ma vue de table. :)

Même chose avec l'en-tête aussi.

Existe-t-il un moyen simple de l'empêcher de flotter au-dessus de la vue du tableau lorsque vous faites défiler?

Merci à tous, je n'ai pas trouvé de réponse ailleurs.

64
Jason

Ok, il s'avère que si vous définissez la vue de pied de page via blahblahtableView.tableFooterView = someview;, le pied de page ne défilera pas avec le tableau.

Cependant, si vous créez votre pied de page à l'aide de viewForFooterInSection, il suivra votre vue et restera en bas de l'écran.

Je ne sais pas pourquoi je n'ai pas pu trouver cette réponse plus tôt. Désolé tout :)

113
Jason

Vous avez 2 types de pied de page: l'un est le pied de page de la section et l'autre est le pied de page de la table.

Le pied de section apparaît en dessous de chaque section. De l'autre côté, le pied de page de la table n'apparaît qu'une seule fois à la fin de la table.

Il n'existe aucun moyen en un clic de désactiver le flottement du pied de page de section.

Si vous voulez un "pied de page" qui apparaît toujours comme la dernière cellule de sa section et qui se fixe au bas de la vue de table, vous devez ajouter une cellule supplémentaire à votre section et toujours la traiter comme la dernière de votre section.

Si vous n'avez qu'une section dans votre table, vous pouvez utiliser le pied de page de la table pour être votre pied de page.

30
rsc
- (id)init {
    self = [self initWithStyle:UITableViewStyleGrouped]; //Default is UITableViewStylePlain
    return self;
}
25
guogangj
self.YOUR_TABLE_VIEW.tableFooterView = YOUR_FOOTER_VIEW;
3
Zulqarnain

Si vos cellules sont divisées en sections et que vous utilisez la fonction:

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView?

pour définir votre pied de page, alors dans IB, vous pouvez également définir le style UITableView sur Grouped est une autre solution possible!

1
megu5202

Si j'ai bien compris la question, vous voulez essentiellement fixer le pied de page/en-tête et faire défiler tout le reste? Si tel est le cas, vous pouvez simplement avoir l'en-tête et le pied de page en tant que vues distinctes de la vue de table, qui se trouvent au-dessus de la vue de table dans la hiérarchie des vues, afin qu'elles couvrent le contenu de la vue de table.

Si vous voulez qu'ils rebondissent (lorsque vous faites défiler au-dessus ou en dessous du contenu) avec la tableview, vous devez suivre la méthode de la tableview (la tableview est une sous-classe de scrollview, donc cela fonctionne) - (void)scrollViewDidScroll: et calculez le nouveau positionner soit au pied de page, soit à l'en-tête.

J'espère que vous obtiendrez ma réponse, j'ai fait quelque chose de similaire à cela et cela a fonctionné (je voulais que le truc "Release to update" soit en haut de la table)

0
Henri Normak

J'avais un problème similaire. J'utilisais uniquement un pied de page pour indiquer le nombre de cellules dans le tableau au bas de celui-ci. Mais il ne défilait pas avec les cellules de la table comme je m'y attendais (c'était visible à tout moment sur le dessus de la table jusqu'à ce que j'atteigne le bas où il rebondit).

Ma solution pour surmonter cela a été de créer 2 sections, une contenant les cellules du tableau et une autre vide mais avec un en-tête. Cet en-tête affichera le compteur et se comportera comme je le souhaitais (pour rester en bas du tableau à tout moment plutôt que de superposer les cellules).

La solution recommandée consistant à ajouter une cellule factice en bas n'était pas utile dans mon cas, elle serait bordée par la table avec bordure filaire et je ne le voulais pas.

J'espère que cela t'aides

0
Abolfoooud

Consultez ma réponse ici, https://stackoverflow.com/a/41816730/1553351 . Le code fait exactement ce que vous avez décrit dans votre question

0
Lucas Chwe