2010-07-07 3 views
3

J'ai 3 UITableViews sur un UIView dans lequel je charge 3 ensembles de données différents à partir de NSMutableArrays. Si j'appelle [myTableView reloadData] le type de rechargement de données - il est ajouté à la table avec tout ce qui existe déjà. Ainsi, 3 appels à reloadData donnent des informations triplement listées. Comment éviter que cela se produise ou comment effacer mon tableau avant de le recharger?UITableView reloadData duplique les données

+0

Ajoutez-vous des données n'importe où dans les méthodes appelées par UITableView lors du rechargement? – Garrett

+1

hahaha - pourquoi oui je suis, DOH! La duplication se produit dans mes tableaux et non dans ma vue de table - merci! – Slee

+0

postez cela comme une réponse, donc je peux vous donner le crédit – Slee

Répondre

1

La cause la plus fréquente de ceci n'est pas de réutiliser des cellules tableview. Si vous créez une nouvelle cellule pour chaque ligne logique dans le tableau (au lieu de la déqueuing et de la réutilisation), la tableview peut continuer à afficher toutes les cellules. (** Edit:. ** probablement ne se produira pas)

Si pas, alors il sera dans l'une des trois méthodes qui reloadData appels:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

Tableviews affichent simplement les données. Si la table se duplique, vous dupliquez probablement les données dans le code quelque part. Vous voulez vous assurer que l'un d'entre eux ne provoque pas la relecture de la source d'origine du tableau et son ajout au MutableArray qui fournit les données à la table.

+0

La création de nouvelles cellules ne duplique pas les données visibles. Cela entraînera une fuite efficace des anciennes lignes (plus précisément, pour être inutilement mises en cache) si la cellule a été créée avec un identifiant de réutilisation. Cependant, ces cellules ne seront pas à l'écran, elles seront simplement mises en cache par la tableview. –

+0

Il me semble me souvenir d'une accumulation dans certains cas, mais je peux me tromper. – TechZen

Questions connexes