2010-11-15 5 views
0

J'ai un UITable avec un UITableCell personnalisé. Lorsque la table affiche la plupart des éléments sont vides, sauf pour le triangle d'affichage. Lorsque je fais défiler les cellules vers le haut et vers le bas, les cellules s'allument et s'éteignent au hasard, mais à un moment donné, la plupart sont vides.Cellules personnalisées dans UITable aléatoirement

Informations supplémentaires: 1) C'est la "bonne cellule". Quand je clique sur la divulgation, ça va au bon endroit. 2) J'ai utilisé exactement le même code dans une autre table et cela fonctionne bien. (Oui, j'ai changé toutes les variables, y compris l'identifiant de la cellule 3) J'ai désactivé la réutilisation des cellules, le problème est toujours là. 4) J'ai utilisé des ficelles dans ma cellule, le problème est toujours là 5) La cellule est créée à partir d'une plume.

Voici le code en question (version affichée ne pas utiliser les cellules de réutilisation et a du faux texte dans les variables.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
static NSString *announcementCellIdentifier = @"AnnouncementCellIdentifier"; 

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"AnnouncementCell" owner:self options:nil]; 
AnnouncementCell *cell = [nib objectAtIndex:0]; 

NSUInteger row = [indexPath row]; 
NSArray *keylist = [[NSArray alloc] init]; 
if ((tableView == self.tableView)) { 
    keylist = announcementsInCommunity; 
} else { 
    keylist = filteredAnnouncementNames; 
} 

… 

cell.announcementCreationTimeLabel.text = @"00/00/00"; 
cell.announcementCreatorLabel.text = @"The Creator"; 
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
cell.announcementSubjectLabel.text = @"Subject"; 

return cell; 

}

+0

Vous perdez de la mémoire lors de l'affectation de 'keylist'. N'invoquez pas 'alloc/init'. –

+0

Merci d'avoir attrapé ça. Je l'ai corrigé. Je ne m'attendais pas à ce qu'il résolve le bug sous-jacent et ce n'était pas le cas. – JohnF

Répondre

0

Je ne suis pas sûr, mais normalement nous pouvons utiliser owner:nil Lorsque je charge une plume comme celle-ci, je ne vois toujours rien d'autre qui puisse causer le problème, mais il se peut que ce soit dans la section du code que vous ayez omis aussi

+0

Je l'ai modifié sans résultat. Il semble que le code UITable ait du mal à déterminer quelles cellules sont visibles. Cela a-t-il un sens? – JohnF

+0

J'ai également commenté le code omis. Je n'exécute pas exactement le code montré dans l'exemple (avec la fuite de mémoire fixe) – JohnF

+0

oups. "MAINTENANT exécuter exactement le code ..." – JohnF

0

J'ai décidé qu'il devait y avoir quelque chose qui n'allait pas dans la plume fichier, mais je ne pouvais pas le trouver. supprimé le .xib et a recommencé. Maintenant ça fonctionne bien.

0

J'ai eu le même problème. Dans mon cas, le problème est que le contrôleur a 2 prises pointant vers le même customCell. Je ne sais pas comment ce pointeur supplémentaire peut être un problème.

Questions connexes