2009-05-26 9 views
2

J'ai un UITableView qui utilise UITableViewCell personnalisé pour afficher quelques informations. Je voudrais ajouter un UITableViewCellAccessoryDisclosureIndicator aux cellules.L'indicateur de divulgation disparaît?

Chaque méthode que j'essaie avec succès ajoute le chevron, mais une fois que la vue de la table défile, ils disparaissent. Je fais la méthode standard dequeueReusableCellWithIdentifier, et quand je jette les références aux cellules, il les réutilise correctement. Toutes les autres données s'affichent correctement, seuls les chevrons disparaissent.

choses que j'ai essayé:

  1. cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator];
  2. [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
  3. accessoryTypeForRowWithIndexPath:

Quelqu'un at-il jamais y arriver?

Répondre

4

Il pourrait se produire parce que vous définissez votre type d'accessoire en dehors du test cellulaire en cache:

static NSString *CellIdentifier = @"UIDocumentationCell"; 
     cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     if (cell == nil) { 
      cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
     } 
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
     [cell setText:mytext]; 

La meilleure façon, à mon humble avis est comme ceci:

static NSString *CellIdentifier = @"UIDocumentationCell"; 
     cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     if (cell == nil) { 
      cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
     } 
     [cell setText:mytext]; 

Cocoa Touch ne semble pas vouloir modifier l'instance mise en cache de la cellule (sous-vues) en définissant l'indicateur de divulgation dans la méthode de jeu de cellules entraîne la mise en cache de l'indicateur et redessiné une fois que la cellule apparaît à nouveau.

+1

En fin de compte, ce n'était pas mon problème, bien que j'apprécie la meilleure pratique. Il s'avère que j'avais un code qui a fait une boucle dans les sous-vues, les supprimant. Cela s'est également produit pour supprimer l'indicateur, et je ne faisais que rajouter les étiquettes. –

+0

Cool ... Content que tu aies résolu le problème. THX! –

Questions connexes