7
votes

indexpath.row commence à partir de 1 au lieu de 0

Je suis confronté à un problème de signature avec une vision utile. Un jour lorsque la source de données / numéros de ma table a 3 valeurs, CellForowaDexPath commence à 0-1 au lieu de 0-0. Quelqu'un peut-il m'aider à trouver les raisons possibles de cette question se produira. Même essayé d'imprimer les journaux, mais les journaux ont été affichés pour 0 -1 et 0 -2 mais pas pour 0 -0. Cela signifie qu'il ne s'agit pas d'appelé pour la première ligne de 0 -0.


3 commentaires

Mettez les méthodes déléguées, ce que vous avez essayé?


Quel est le problème?


Cela ne se produira que lorsque vous essayez de charger une table partiellement en utilisant ReloadrowowSaIndexPaths: Windowanimatio ou charger directement n'importe quelle section.


4 Réponses :


5
votes

TABLEVIEW: CellfrofortIdExpath: est appelé au besoin pour afficher une cellule, si une cellule ne sera pas affichée, elle n'est pas appelée. Si la rangée 0 n'est pas affichée, la section de section 0-0 ne sera pas appelée.


7 commentaires

Mais dans NumberofrowsectionSection, je passe la valeur comme 3, alors comment ça saute directement à 1 au lieu de partir de 0?


Et à ma grande surprise, cela se produit dans iOS 8 mais pas dans iOS7. Mais je ne pense pas que cela devrait être un problème, c'est juste une supposition sauvage.


Oui, je suis d'accord pour dire que Zaph, mais la vue de la table est capable d'afficher trois cellules et que le point est sans appeler n'importe quelle méthode comme ReloadrowowSatidExpath Qu'est-ce qui le permet de sauter 0 et de passer directement à 1 lorsque la table est capable d'afficher toutes les trois cellules .


Et comme je l'ai mentionné précédemment, cette question se produit dans le périphérique IOS8 et non dans iOS7 :(


Oui, j'ai pu voir seulement 2 rangées dans IOS8 et 3 dans iOS7 pour le même morceau de code.


Ok, maintenant nous avons le problème. Essayez d'ajouter un NSLog () de NumberOfrowSection: 0 au sommet de TableView: CellfornatindexPath .


Oui j'ai ajouté et il l'imprime comme 3, mais il n'y a que deux rangées visibles



3
votes

Comme Zapht indiqué, TableView: Cellfornatindexpath: est appelé chaque fois qu'une table souhaite afficher une cellule pour un chemin d'index donné, donc si vous n'obtenez pas un chemin d'index avec une rangée de 0 , cela signifie que vous faites probablement quelque chose qui empêche cette cellule d'être montrée.

Ma première suggestion serait d'enquêter sur votre TableView: hauteurfinxporexpath: méthode, et 1) Vérifiez s'il est appelé avec une ligne de chemin d'index de 0, et 2) Assurez-vous que quelque chose> 0 est en cours d'être retourné.

Le fait que vous le voyiez sur iOS 8 ne signifie pas nécessairement que quelque chose de natif est cassé, mais peut-être suggérer que certaines de votre logique qui contribue aux méthodes ci-dessus est affectée par les modifications iOS 8. IOS 8 avait jeté de la façon dont je faisais des calculs de taille de texte, alors peut-être quelque chose de moins évident que cela résulte de la hauteur non supérieure à 0.


1 commentaires

Changer l'hearfinornordindexpath résolu pour moi, merci!



0
votes

Vous pouvez d'abord vérifier le nombre de sections et le nombre de lignes. Si le numéro de la ligne d'une section renvoyée 0, cette section ne sera pas appelée.


0 commentaires

0
votes

La chose qui a fonctionné dans mon cas est que j'ai une méthode estimée estiméeHeightrofornat de ma classe. Quand j'ai commenté cette méthode, le code fonctionne bien ..

Func TableView (_ TableView: UitailView, estimationHeightFornat IndexPath: IndexPath) -> CGFLOAT {

}

J'ai supprimé la méthode ci-dessus de mon code. Cela a sauvé ma journée :)


0 commentaires