2009-11-07 4 views
2

J'utilise un UITableViewCell personnalisé, avec des libellés. Il y a une étiquette dans la cellule où la longueur de la chaîne est variable, à cause de cela je ne peux pas définir une hauteur constante à la cellule dans la méthode heightForRowAtIndexPath. Je ne veux pas non plus placer la logique de calcul de ma cellule personnalisée dans le délégué de table.Définition de la variable UITableViewCell height

Répondre

3

Que diriez-vous de définir une méthode de classe sur votre classe de cellule pour faire les calculs? Vous devrez peut-être passer un tas d'informations du délégué à la classe de cellule (comme un objet de modèle, ou un contenu), et vous devrez peut-être dupliquer du code de votre cellule layoutSubviews ou drawRect:, mais au moins toute la logique vivrait dans la classe cellulaire.

Dans votre délégué, vous pouvez ensuite éliminer toute logique nécessaire pour transformer un chemin d'index dans la classe de cellule en sa propre méthode, appelable à partir de heightForRowAtIndexPath: et cellForRowAtIndexPath:.

+0

cela semble être une bonne idée, merci! – cocoapriest

8

-heightForRowAtIndexPath: est l'endroit où vous arrivez à le définir. Je sais que mettre cette logique dans le délégué tableview est un peu moche, mais cela ne peut pas être fait dans la cellule. Pensez-y, la tableview doit connaître la hauteur de la cellule avant même d'instancier la cellule afin qu'elle puisse calculer la longueur de la barre de défilement (qui est proportionnelle). Cela signifie que vous ne pouvez pas calculer la taille de la cellule dans la cellule elle-même car la taille de la cellule doit être connue bien avant que la cellule ne soit instanciée. En d'autres termes, vous ne pouvez pas définir la hauteur de la ligne dans la cellule car celle-ci doit connaître la hauteur des cellules qu'il n'instanciera jamais si l'utilisateur ne les fait pas défiler.

Questions connexes