11
votes

Comment obtenir IndexPath.row de la TableView qui est actuellement affiché?

J'ai une vue de table avec de nombreuses valeurs.

Je veux obtenir le premier indexpath.row de la table qui est affiché actuellement.

Comment puis-je faire cela?

i Obtenez une erreur suivante lors de la mise en œuvre de la réponse de Krishnabhadra:

Ligne à laquelle l'erreur vient: xxx

Erreur: xxx

Qu'est-ce qui pourrait être faux?


6 commentaires

actuellement affiché ou actuellement sélectionné par l'utilisateur?


J'ai demandé à moins que votre cellule ne soit si grosse de sorte qu'il couvre l'écran entier, plus d'une cellules y sont affichées


Aucune taille de cellule ne peut être faible ou il peut être important sur la base de la quantité de données


est-ce un tableau ou un seul objet nsindexpath


Vous devez transmettre l'objet IndexPath de votre tableau.Vérifiez si vous avez la bonne index de l'index.


Indexis est l'objet NsindexPath.


5 Réponses :


0
votes

Vous pouvez utiliser: [auto.tableview visiblecells]

qui retournera un nsarray d'objets UitablesViewCell, chacun représentant une cellule visible dans la vue de table réceptrice.

http://developer.apple .com / bibliothèque / iOS / # documentation / uikit / référence / uableview_class / référence / référence.html


0 commentaires

26
votes

Vous pouvez utiliser la tableView indexpathsforvisiblerows code> fonction, qui renvoie un nsarray code> de nsindexpath code> pour tous visible uitatifviewcell code>. De indexpath.row code> Vous pouvez trouver votre index de tableau.

NSArray *visible       = [tableView indexPathsForVisibleRows];
NSIndexPath *indexpath = (NSIndexPath*)[visible objectAtIndex:0];


5 commentaires

Merci je vais essayer ça bientôt et revenir à vous :)


Où devrais-je écrire ce code? Sur CellfornatDindexpath ?


Vous pouvez l'appeler à partir de n'importe où..Calculez-le où vous souhaitez la liste des cellules visibles ..


Je fais défiler jusqu'à une position, puis passez à un autre onglet dans ma barre d'onglets puis retournez sur la même tableView, puis je souhaite que la vue de table affiche les mêmes cellules qu'il affichait avant la commutation. Donc, dans ce cas, où devrais-je écrire le code?


Dans la fenêtre Viewwilldisappear du code, écrivez le code ci-dessus pour obtenir le index du tableau visible ... Ensuite, dans la fenêtre ViewWillappear utilisez ScrollProwatidExpath Fonction de votre TableView pour faire défiler jusqu'à l'indexPath que vous avez enregistré dans la matrice avant.



3
votes
[self.myTableView visibleCells];

NSArray *anArrayOfIndexPath = [NSArray arrayWithArray:[self.myTableView indexPathsForVisibleRows]];

NSIndexPath *indexPath= [anArrayOfIndexPath lastObject];

Hope this will help you.

1 commentaires

Totalement et exactement ce que je cherchais. Merci :)



3
votes

Vous pouvez utiliser indexpathsforvisiblers

Retourne une gamme de chemins d'index d'identification chacune d'une ligne visible dans le récepteur. xxx

Valeur de retour < / p>

Un tableau d'objets NsIndexPath représentant chacun une ligne d'index et d'index de la section qui identifient ensemble une ligne visible de la vue Tableau. Retourne nil si aucune ligne de lignes n'est visible.


0 commentaires

0
votes

Obtenir le numéro d'index exact au Centre actuellement affiché:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {

  let middleIndex = ((tableView.indexPathsForVisibleRows?.first?.row)! + (tableView.indexPathsForVisibleRows?.last?.row)!)/2
  print(middleIndex)

}


0 commentaires