J'ai vu cette question posée plusieurs fois, mais étonnamment, je n'ai pas vu de réponse uniforme, donc je vais l'essayer moi-même:
Si vous avez un tableview contenant vos propres UITableViewCells qui contiennent UITextViews et UILabels dont la hauteur doit être déterminé au moment de l'exécution, comment êtes-vous censé pour déterminer la hauteur de chaque ligne dans heightForRowAtIndexPath?
La plus évidente de la première idée est de calculer la hauteur de chaque cellule par le calcul, puis en additionnant les hauteurs de chaque point de vue à l'intérieur de la cellule à l'intérieur de cellForRowAtIndexPath, et magasin de finale de hauteur totale pour une récupération ultérieure.
Cela ne fonctionnera pas cependant parce que cellForRowAtIndexPath est appelée APRÈS heightForRowAtIndexPath.
La seule chose que je peux penser à est de faire tous les calculs à l'intérieur de viewDidLoad, de créer tous les UITableViewCells ensuite, calculer les cellules de la hauteur et de la stocker dans un champ personnalisé à l'intérieur de votre UITableViewCell sous-classe, et de mettre chaque cellule dans un NSMutableDictionary avec le indexPath comme la clé, puis il vous suffit de récupérer de la cellule du dictionnaire à l'aide de la indexPath à l'intérieur de cellForRowAtIndexPath et heightForRowAtIndexPath, renvoyant soit à la hauteur personnalisée de la valeur ou de la cellule de l'objet lui-même.
Cette approche semble erroné car il ne fait pas usage de dequeueReusableCellWithIdentifier, au lieu de cela, je serais le chargement de toutes les cellules à la fois dans un dictionnaire dans mon contrôleur, et le délégué des méthodes serait de ne rien faire de plus que de récupérer la bonne cellule à partir du dictionnaire.
Je ne vois pas d'autre façon de le faire bien. Est-ce une mauvaise idée - si oui, quelle est la bonne façon de le faire?