2009-06-01 5 views
0

Ich habe ein benutzerdefiniertes UITableViewCell mit einem UIScrollView, das mit dem Zellencontroller verbunden ist. Wenn ich dem Scrollview Text zuweise, erhalten einige Zellen den richtigen Text, einige sind leer, einige zeigen alten Text wieder an und bei anderen wird der Scrollview um die zweite oder dritte Textzeile gekürzt. Es scheint zufällig zu sein, was passieren wird. Ich folgte dem Vorschlag, einen Timer zu verwenden, um leere Zellen zu reparieren, http://www.bdunagan.com/2008/12/08/uitextview-in-a-uitableview-on-the-iphone/, aber das half nicht. Ich habe den Timer-Code in die cellForRowAtIndexPath-Methode gestellt.UIScrollView in UITableCellView, Zelle wird nicht aktualisiert

Ich habe auch versucht,

[cell.textview setNeedsDisplay]; 

nach Text in dem Textview Aufruf zugeordnet ist, aber es hat keine Auswirkungen auf.

Wenn ich ein Textfeld oder ein Etikett verwende, sieht alles gut aus. Ich brauche jedoch etwas, das Text scrollen kann. Irgendwelche Vorschläge für eine Lösung oder einen besseren Weg?

Antwort

1

Update: Fand dieses auf den Entwickler-Foren (speziell erwähnt Ihr Problem):

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

ich den Link folgen würde es etwas ausführlichere Informationen hat.

// 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; 
} 

Aufruf Versuchen:

[tableView reloadData]; 

Nachdem Sie alle Textviews aktualisieren.

+0

textViews werden in cellForRowAtIndexPath aktualisiert. Ich habe versucht [tableView reloadData] aufzurufen; dort aber hatte es keinen Einfluss. – 4thSpace

+0

Direkt vor der Rückkehrzelle; Ich mache NSLog (@ "\ nrow =% d textview.text:% @", row, cell.textview.text); und es hat immer den richtigen Wert. Aber es zeigt es kaum an. Normalerweise sind die Zellen leer. – 4thSpace

+0

Wenn Sie in der Tabelle blättern, werden die Werte beim Scrollen aktualisiert? –