2010-05-27 6 views
1

Je suis en train de faire une comparaison dansRéglage hauteur UITableViewCell est cher

- (CGFloat)tableView:(UITableView *)tblView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

Il semble que la performance de mon application ralentit vraiment vers le bas quand je vérifie si un cell.detailTextLabel.text isEqualTo:@"None";

Quelle est la meilleure façon de faire la comparaison et en définissant la hauteur de la cellule?

Répondre

5

UITableView a une structure de mise en cache complexe implémentée pour réutiliser les cellules si nécessaire car il est coûteux de recréer les tampons sous-jacents pour la gestion des dessins. La modification de la hauteur de la cellule nécessitera que ces tampons soient réaffectés et vous perdrez toute performance obtenue grâce au mécanisme de mise en cache.

Une meilleure implémentation consiste à diviser les cellules que vous allouez en groupes par hauteur et à réutiliser les cellules en fonction de leurs exigences de hauteur. De cette façon, aucune mémoire tampon ne doit être réaffectée et vous obtiendrez les performances que vous attendez du UITableView.

3

heightForRowAtIndexPath est utilisé lors de la création d'une cellule et, en tant que tel, ne doit pas accéder à la cellule. Au lieu de vérifier le contenu de la cellule, vérifiez la même source que vous utiliseriez pour définir le contenu de la cellule.

Questions connexes