2010-06-25 8 views
4

Je voudrais connaître la limite du nombre maximum de lignes pouvant être affichées dans UItableView. Merci d'avance.nombre maximum de lignes pouvant être affichées sur tableview

+0

Avez-vous une raison de croire qu'il y a une limite? – Eiko

+0

@Eriko: je m'attends à insérer environ 3k lignes (Texte seulement, avec index). Alors voulez savoir quelles sont les complications qui pourraient survenir. – thndrkiss

+0

Je l'ai enveloppé dans une réponse. – Eiko

Répondre

3

Il semble n'y avoir aucun maximum. Vous n'insérez pas activement de toute façon, vous implémentez simplement les méthodes déléguées pour servir les cellules - elles ne sont pas chargées toutes en même temps si elles sont correctement effectuées. Après l'avoir essayé avec mille cellules personnalisées, cela a fonctionné sans problème. Mais avec 3k même avec index c'est beaucoup à faire défiler, je considérerais les mettre dans une hiérarchie de navigation (mais cela dépend fortement de votre utilisation). Une autre chose: Assurez-vous d'être efficace lorsque vous dessinez les cellules, c'est-à-dire exécutez drawRect: au lieu d'encombrer les cellules avec des étiquettes, des vues, etc., cela accélèrera le défilement.

+0

'NSInternalInconsistencyException', raison: 'Impossible d'allouer des magasins de données pour 9223372036854775807 lignes dans la section 0. Pensez à utiliser moins de lignes' J'étais curieux et tombé sur ceci. – Ohmnastrum

9

Ce message Cocoa with Love blog est très instructif - il examine les performances d'une vue de table avec des milliers de cellules.

La question est de savoir si elle a une limite dure interne - il est assez apparemment pour la plupart des besoins - le conclut poste ci-dessus:

L'iPhone peut gérer des tables avec 100.000 lignes - et il continue de faire défiler aussi bien que mais il n'y avait que 100 lignes.

+1

L'article mentionne également que passé 800 000 rangs de hauteur 44, le flotteur simple précision (plate-forme 32 bits) utilisé pour le positionnement cellulaire échoue (== perd de la précision et vous obtenez des cellules partiellement chevauchées). –

2

Vous sera finalement limité par le fait que toutes les méthodes telles que numberOfRowsInSectiin prendre des arguments entiers, mais nous espérons que vous aurez pas besoin d'approcher les limites :)

0

En méthode déléguée numberofRawInSection nous sommes reviennent généralement compte du tableau qui est le type Int, donc le nombre maximum de lignes qui peuvent être montrées sur la section tableview = Int.max

Questions connexes