2010-10-07 20 views
0

J'ai tellement de cellules dans la vue de table disent près de 500. Chaque cellule a ses propres images et paragraphes de chaîne. En fait, je dessine ces images & avec l'aide de la méthode drawRect d'UIView. J'ai donc besoin de calculer l'image et la position de chaque chaîne (y compris leur largeur & hauteur pour mesurer la hauteur de la cellule et les zones d'emballage). Si j'ai fait le calcul à la fois pour toutes les cellules, cela prend du temps ... Ce n'est pas bon. Je veux montrer les cellules rapidement. Donc, je veux faire des calculs uniquement pour les cellules visibles et je veux montrer immédiatement les cellules visibles. Ensuite, le calcul pour les autres cellules devrait se dérouler en arrière-plan. Une dernière chose, je vais faire des calculs qu'une seule fois pour chaque cellule. Une fois que je l'ai fait, je vais stocker les valeurs dans le tableau. La prochaine fois je montrerai simplement les choses selon les valeurs de tableau, pas par des calculs.Comment faire des calculs uniquement pour les cellules visibles dans l'iPhone?

S'il vous plaît, aidez-moi à le faire ... Je veux juste savoir si c'est possible? Si oui, quelle est la procédure pour y parvenir?

Merci à l'avance ...

Répondre

2

Il n'y a pas de « procédure » pour le faire. UITableView se comporte toujours de cette manière. Vous fournissez des rappels pour indiquer le nombre de sections et de lignes par section et comment remplir chaque cellule. UITableView vous demandera seulement de remplir les cellules visibles, et même de recycler les cellules quand elles défileront (plutôt que de les créer à l'infini).

0

Vous pouvez récupérer les cellules visibles dans UITableViewController via

[self.tableView indexPathsForVisibleRows] 

alors vous pouvez faire le traitement pour les cellules visibles. par exemple.

for (NSIndexPath *path in paths) { 
// do some processing in [self.tableView cellForRowAtIndexPath:path] 
} 

I fait la même vue personnalisée pour 1000 lignes avec drawRect personnalisé pour chaque cellule et utilisé le procédé ci-dessus afin d'optimiser le chargement des cellules. Mon traitement n'a lieu que pendant le ff:

  1. En charge (viewDidLoad), mettez à jour les cellules visibles.

  2. Lorsque l'utilisateur arrête le défilement (par défaut à un support d'endroit vierge lors du défilement)

0

Je pense que vous pouvez utiliser la propriété visibleCells de UITableView.

UITableView *tableView; 
NSArray *cells = tableView.visibleCells;