22 votes

UITableViewCell: Hauteur de ligne personnalisée pour la cellule de prototype

Dans mon fichier storyboard, je conçois plusieurs cellules prototypes dans un UITableView. Chaque cellule a son propre identifiant de cellule unique.

En fonction de la section et de la ligne, je défile l'une des cellules prototypes dans la méthode - tableView:cellForRowAtIndexPath:

Pour la plupart des cellules prototypes, je n'ai pas changé la hauteur de la ligne. Sur mon storyboard, leur hauteur semble être déterminée par la propriété 'Hauteur de la ligne' sous l'inspecteur de taille de UITableView.

Pour une cellule prototype, j'ai changé la hauteur à travers la propriété 'Hauteur de la ligne' sous l'inspecteur de taille de la UITableViewCell spécifique. La case à cocher 'Personnalisé' est également cochée.

Sur mon storyboard, cela semble bien fonctionner. Mais lors de l'exécution quand mes cellules sont défilées et ajoutées au TableView, toutes les cellules ont la hauteur de ligne par défaut.

Maintenant, je suis conscient de la méthode tableView:heightForRowAtIndexPath: qui est mentionnée dans d'autres messages, mais il semble un peu étrange de l'utiliser car je définis déjà une hauteur de ligne personnalisée dans mon storyboard.

Est-ce que quelqu'un sait pourquoi cette propriété ne fonctionne pas? Cette propriété est peut-être destinée à être utilisée dans des situations différentes?

Merci

19voto

enreas Points 846

Si vous voulez utiliser Interface Builder dans Xcode 5 pour changer la hauteur des lignes dans une vue de table sans code, vous pouvez le faire à deux endroits :

  • Sélectionnez la vue de table, affichez l'inspecteur de taille et saisissez la hauteur dans Hauteur de ligne, dans la section Taille de la vue de table.

Hauteur de ligne par défaut

  • Sélectionnez la cellule prototype, affichez l'inspecteur de taille, cochez Personnalisé dans la section Taille de la vue de table et saisissez la hauteur de la ligne dans le champ de texte associé.

Hauteur de ligne personnalisée

Utilisez-vous peut-être la deuxième méthode? Essayez d'utiliser la première méthode pour définir la hauteur par défaut de toutes les lignes dans la vue de table et la deuxième pour indiquer à Interface Builder les exceptions.

16voto

Martin R Points 105727

heightForRowAtIndexPath est appelée (pour chaque ligne du tableau) avant que les cellules ne soient affichées, c'est-à-dire avant l'appel de cellForRowAtIndexPath. Cela est nécessaire pour calculer la disposition de la scrollview sous-jacente, les indicateurs de défilement, etc.

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