Comment redimensionner dynamicment la hauteur de UITableViewCell

J’ai l’UITableView classique groupé avec des vues de UIText modifiables dans chaque cellule. Ces vues de texte peuvent être à une ou plusieurs lignes et je souhaite que la cellule augmente sa hauteur à mesure que l’utilisateur écrit et que le texte commence une nouvelle ligne.

Ma question est la suivante: dois-je recharger toute la table pour augmenter la hauteur d’une cellule? N’y a-t-il pas d’autre méthode?

J’ai beaucoup cherché, et les réponses précédentes et les didacticiels expliquent simplement comment calculer la hauteur du texte, comment implémenter heightForRowAtIndexPath … des choses que je connais déjà. Mon souci est que, pour réaliser ce que je veux, je devrai calculer la hauteur et recharger la table chaque fois que l’utilisateur entre un nouveau personnage, ce que je ne trouve pas très propre ou efficace.

Merci.

Vous n’avez pas toujours à recharger la table entière. Vous pouvez simplement recharger cette ligne.

[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:UITableViewRowAnimationFade]; 
 [tableView beginUpdates]; [tableView endUpdates]; 

Pour être plus précis, oui, vous devez implémenter tableView:heightForRowAtIndexPath: pour calculer la nouvelle hauteur, faites ce que dit Rickharrison et appelez [tableView reloadRowsAtIndexPaths:withRowAnimation] . Disons que vos cellules peuvent avoir une hauteur étendue et une hauteur normale, et que vous souhaitez qu’elles grossissent lorsqu’elles sont activées. Tu peux faire:

 -(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*) indexPath { if ([expandedPaths containsObject:indexPath]) { return 80; } else { return 44; } } -(void)tableView:(UITableView*) didSelectRowAtIndexPath:(NSIndexPath*) indexPath { [expandedPaths addObject:indexPath]; [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; } 

-reloadRowsAtIndexPaths:withRowAnimation n’a pas redimensionné la hauteur UITableViewCell, même après avoir modifié le cadre de la cellule. Cela n’a fonctionné que lorsque je l’ai suivi avec un -reloadData :

 [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:UITableViewRowAnimationFade]; [tableView reloadData];