UITableView indexPath de la dernière ligne
Je suis tenter de faire la dernière ligne d'une UITableView
visibles, après qu'il a été ajouté. Maintenant, lorsque j'ajoute une ligne et d'appel reloadData, la table va vers le haut.
Je me dis que si je reçois le indexPath
pour la dernière ligne, que je peux sélectionner la ligne et il devrait apparaître dans la liste. Je ne suis pas certain de la façon d'obtenir cette valeur, ou même si je me rapproche de ce correctement.
Comment puis-je obtenir un indexPath
pour une ligne spécifique?
- après rechargement utiliser - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cellule forRowAtIndexPath:(NSIndexPath *)indexPath
- NSIndexPath est une combinaison de sectionIndex et rowIndex vous pouvez faire NSIndexPath en passant ces deux valeurs. Ici est un exemple: [NSIndexPath indexPathForRow:rowIndex inSection:sectionIndex];. Dans votre cas rowIndex est arrayCount-1.
- Aussi pour la dernière ligne de visibilité, vous pouvez définir tableView offset y coordonner. Il suffit de le mettre (contentSizeHeight-tableHeight) il va vous montrer jusqu'à la dernière ligne. Exemple: [tblView setContentOffset:CGPointMake(0.0, tblView.contentSize.hauteur - CGRectGetHeight(tblView.image)) animated:YES]; .... Je vais répondre en commentaire parce que je ne veux pas donner une double réponse.
Vous devez vous connecter pour publier un commentaire.
Veuillez noter que vous n'avez pas besoin d'appeler le
reloadData
de faire la dernière ligne visible. Vous pouvez faire usage descrollToRowAtIndexPath
méthode.Vous pouvez utiliser le code ci-dessous pour atteindre votre objectif.
Swift 4.0:
Vous pouvez utiliser scrollToRowAtIndexPath avec extension:
Dans Swift 3:
Comme suggéré par d'autres pour obtenir indexPath pour perticular des sections comme la section 0.
Après l'appel...ajouter cette methos en
cellFOrROwAtIndex
[tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
..pour faire défiler spécifiques indexPath dans TableView.Remarque:-Mais il a encore besoin de faire défiler le tableview dans la direction vers le bas.
Vous ne devriez pas être à l'aide de
-reloadData
pour ce cas d'utilisation. Ce que vous cherchez est-insertRowsAtIndexPaths:withRowAnimation:
.N'hésitez pas à demander si vous voulez des exemples d'utilisation ou une explication plus détaillée du pourquoi de l'utilisation de
-reloadData
vous envoyer vers le haut de laUITableView
.nil
Pas obligatoirement nécessaire pour obtenir le indexpath de la dernière ligne.
Vous pouvez définir la CGPoint de UITableview pour montrer une dernière ligne ajoutée.
J'ai toujours utiliser ce code dans mon application de chat pour montrer un dernier message.
J'espère qu'il va travailler pour vous.
Merci.
Shamsudheen SAVOIRS traditionnels de la réponse crash
La solution suivante pour éviter le crash au moment de l'exécution
Remarque: Si vous essayez de faire défiler vers le bas dans le bloc/clousure alors vous avez besoin d'appeler sur ce thread principal.
Espère que cela aide les autres