2009-05-27 6 views
1

J'ai ce bug vraiment bizarre. Lorsque je fais défiler la vue de ma table jusqu'à une section appelée "description", les cellules de cette section ne seront pas affichées. Au lieu de cela, le titre de la section est répété encore et encore. On dirait que celui qui est en charge de l'affichage de l'écran dans l'iPhone ne trouve rien à afficher et laisse ce qui était sur l'écran avant (et c'est le titre de la section parce que je fais défiler vers le bas).Bogue étrange dans le périphérique: le contenu de la cellule UITableView n'est pas affiché

Si je prends une capture d'écran, il est juste un fond noir au lieu de la cellule.

Ce bug n'a pas eu lieu dans le simulateur, mais seulement dans un vrai appareil.

Quelqu'un at-il jamais rencontrer ce genre de chose? Pourriez-vous deviner où est le problème?

Répondre

0

J'ai trouvé la solution ... C'était évident mais quand même ...

Mon UILabel a une taille supérieure à 2048 px. Nous ne sommes pas autorisés à utiliser une taille plus grande que cela, c'est la raison pour laquelle le rendu est si étrange.

Ce fil stackoverflow.com/questions/773386/inserting-various-views-into-uiscrollview a déjà traité cette question.

0

Essayez de changer la description de mot à autre chose. Les classes Objective C utilisent le mot description pour désigner une méthode dans laquelle un objet peut se décrire avec un NSString. Si changer le nom le corrige, votre bug est quelque chose à faire avec ça.

Vous pouvez voir la description au travail comme celui-ci:

NSString *aString = [[NSString alloc] initWithFormat:@"hi"]; 
NSLog(@"%@", [aString description]); 
+0

Bonne supposition, j'ai essayé, mais ne change rien ... – Unfalkster

+0

L'en-tête section « Description » ne devrait pas causer de problème. C'est une chaîne normale! – lostInTransit

0

Merci pour vos réponses, je vais mettre le code ici. Mais rappelez-vous que mon code fonctionne bien pour toutes les autres cellules, donc il doit être lié au contenu spécifique de cette cellule, mais ce n'est qu'un texte dans un UILabel ...

N'hésitez pas à consulter la vidéo J'ai fait, c'est un comportement très curieux pour l'iPhone, as-tu vu ça? dl.free.fr/rlQmFyWS0

Voici le code pour cellForRowAtIndexPath: méthode, juste la partie concernée par la cellule de description:

case 3: // A big cell containing the description 
    { 
     // Try to find an already allocated cell with the description (note : there is only one description cell per table so no need to check the content...) 
     UITableViewCell * descriptionCell = [tableView dequeueReusableCellWithIdentifier:kTextCellIdentifier]; 
     if (descriptionCell == nil) { 
      // As a frame, use the description label's one plus a little margin for the height 
      descriptionCell = [[[UITableViewCell alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, self.descriptionText.frame.size.height + (2*kCellInset)) reuseIdentifier:kTextCellIdentifier] autorelease]; 
      descriptionCell.selectionStyle = UITableViewCellSelectionStyleNone; 
      // The descriptionText UILabel has been previously initialized properly by tableview:heightForRowAtIndexpath: method 
      [descriptionCell.contentView addSubview:self.descriptionText]; 
     } 
     return descriptionCell; 

Et voici la partie où j'initialisés le champ descriptionText:

// Customize row height for each cell 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
if (indexPath.section == 3) { 
    CGSize realSize; 
    if (self.descriptionText != nil) { 
     // the description has been previously initialized 
     realSize = descriptionText.frame.size; 
    } 
    else { 
     // We need to dynamically resolve the height for the description zone 
     NSString * desc = (NSString *)[product objectForKey:@"description"]; 
     UILabel * descLabel = [[UILabel alloc] initWithFrame:CGRectZero]; 
     // Unlimited number of lines 
     descLabel.numberOfLines = 0; 
     descLabel.text = desc; 
     // Set a preferred width and anything for the height 
     realSize = [descLabel sizeThatFits:CGSizeMake(tableView.frame.size.width - (2*kCellInset), 1)]; 
     // Take the opportunity to set the frame with the correct values 
     descLabel.frame = CGRectMake(kCellInset, kCellInset, realSize.width, realSize.height); 
     self.descriptionText = descLabel; 
     [descLabel release]; 
    } 
    return (realSize.height + (2*kCellInset)); 
} 
else { 
    return kImageCellHeight; 
} 
return 0; 

}

Toute estimation serait plus que bienvenu ... Je continue ici

enquêtais 0
Questions connexes