2009-06-01 9 views
0

J'ai un UITableViewCell personnalisé avec un UIScrollView qui est connecté au contrôleur de cellule. Lorsque j'attribue un texte au scrollview, certaines cellules obtiennent le texte correct, d'autres sont vides, d'autres affichent de vieux textes et d'autres font défiler la scrollview autour de la 2ème ou 3ème ligne de texte. Cela semble aléatoire sur ce qui va arriver. J'ai suivi la suggestion ici d'utiliser une minuterie pour réparer les cellules vides, http://www.bdunagan.com/2008/12/08/uitextview-in-a-uitableview-on-the-iphone/, mais cela n'a pas aidé. J'ai placé le code temporisateur dans la méthode cellForRowAtIndexPath.UIScrollView dans UITableCellView, la cellule ne se met pas à jour

J'ai aussi essayé d'appeler

[cell.textview setNeedsDisplay]; 

après le texte est affecté à la textview, mais il n'a pas aucun effet. Lorsque j'utilise un champ de texte ou une étiquette, tout semble correct. Cependant, j'ai besoin de quelque chose qui peut faire défiler le texte. Des suggestions sur une solution ou une meilleure façon?

Répondre

1

Mise à jour: trouvé sur les forums dev (mentionne spécifiquement votre problème):

https://devforums.apple.com/message/38944#38944

je suivrais le lien qu'il a quelques informations plus détaillées.

// view controller 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    NSArray*  visibleCells = [self.tableView visibleCells]; 

    for (UITableViewCell* cell in visibleCells) 
    { 
      if ([cell.reuseIdentifier isEqualToString:kTextViewCellID]) 
      { 
       [(MTextViewCell*)cell refresh]; 
      } 
    } 
} 

// MTextViewCell 


- (void)refresh 
{ 
    // mucking with the contentOffset causes the textView to redraw itself 
    CGPoint  contentOffset = mTextView.contentOffset; 
    CGPoint  contentOffset1 = { contentOffset.x, contentOffset.y + 1.0f }; 

    mTextView.contentOffset = contentOffset1; 
    mTextView.contentOffset = contentOffset; 
} 

Essayez d'appeler:

[tableView reloadData]; 

Une fois que vous mettez à jour tous les textViews.

+0

Les textViews sont mis à jour dans cellForRowAtIndexPath. J'ai essayé d'appeler [tableView reloadData]; là mais ça n'avait aucun effet. – 4thSpace

+0

Juste avant la cellule de retour; Je fais NSLog (@ "\ nrow =% d textview.text:% @", ligne, cell.textview.text); et il a toujours la bonne valeur. Mais presque jamais l'affiche. Habituellement, les cellules sont vides. – 4thSpace

+0

Si vous faites défiler la table, les valeurs sont-elles mises à jour lorsque vous faites défiler? –