Est-il possible d'actualisation de la cellule de hauteur sans le recharger/reloadRow?
Je fais une vue comme imessage, il suffit de saisir le texte dans le texte en bas de la vue. J'utilise la vue de la table pour ce faire, et l'affichage de texte dans la dernière cellule. quand j'ai d'entrée de texte long que plus d'une ligne, j'ai besoin de l'affichage de texte et de la cellule de devenir commerçant en ligne. j'ai donc besoin d'actualisation de la cellule de hauteur. mais si j'utilise la vue de la table de la recharger ou de recharger la ligne, le contenu en mode texte disparaît et le clavier disparaît aussi. Est-il possible de mieux à résoudre ce problème?
Peut-être que je devrais utiliser la barre d'outils pour le faire facilement? mais je doute encore la vue de la table peut le faire.
- Je ne suis pas à mon mac ATM, mais je suis sûr que vous pouvez le faire en appelant beginUpdates et endUpdates sur votre table de la vue, rien entre les deux. Évidemment, tu aurais aussi mis à jour n'importe quelle partie de votre modèle qui provoque la cellule pour avoir une hauteur différente de la première.
Vous devez vous connecter pour publier un commentaire.
Les cellules redimensionner en douceur lorsque vous appelez
beginUpdates
etendUpdates
. Après ces appels à la tableView enverratableView:heightForRowAtIndexPath:
pour toutes les cellules de la table, quand la tableView obtenu toutes les hauteurs de toutes les cellules, il va animer le redimensionnement.Et vous pouvez mettre à jour les cellules sans les recharger en définissant les propriétés de la cellule directement. Il n'est pas nécessaire d'impliquer la tableView et
tableView:cellForRowAtIndexPath:
Pour redimensionner les cellules utiliser un code similaire à ce
pour modifier le contenu d'une cellule sans rechargement-je utiliser quelque chose comme ceci:
J'ai écrit une sous-classe de UITableViewCell pour gérer cette fonctionnalité.
.h fichier:
.m fichier:
Exemple D'Utilisation:
Définir la tableview de heightForRowAtIndexPath méthode de rappel dans la tableview du contrôleur de la mise en œuvre de fichier en tant que tel:
Dans votre tableview du contrôleur de la méthode viewDidLoad, appel minimizeForTableview sur votre cellulaire pour s'assurer qu'il commence réduite.
Découvrez cette bibliothèque. C'est une implémentation de message bulles à l'aide de
UITableView
. Gardez à l'esprit que chaque fois qu'une cellule est affichée,cellForRow:atIndexPath
est appelé et la cellule est dessiné.MODIFIER
Vous pouvez utiliser
heightForRowAtIndexPath
La vue de la Table de cellules de ne pas redimensionner facilement. Dot.
Cependant, depuis votre mode texte est dans la dernière cellule, vous êtes chanceux parce que vous pouvez facilement simuler une ligne de redimensionnement. Avoir un texte en vue dans le milieu de la table serait beaucoup plus difficile.
Voici comment j'allais le faire: mettre votre texte à afficher en haut de l'affichage de la table. Synchroniser sa position avec le contentOffset de la tableView dans scrollViewDidScroll:. Et l'utilisation de la animables contentInset de la tableView afin de laisser de la place pour le textView, que l'utilisateur tape dans l'il. Vous pouvez vérifier que votre textView n'est pas déplacé.
beginUpdates
-endUpdates
bloc.