Passend UIWebView in UITableViewCell
Möchte ich hinzufügen, dass ein UIWebView in eine Zelle. Die HTML-Daten wird sich ändern, und ich rufe reloadData, wenn dies geschieht.
Problem ist, die UIWebView änderungen gut, aber ich kann nicht die UITableViewCell zu entsprechen, die Höhe richtig. Ich habe versucht, und scheiterte an dieser Lösung...
Wenn die webview geladen:
- (void)webViewDidFinishLoad:(UIWebView *)aWebView {
CGRect frame = aWebView.frame;
int old_height = frame.size.height;
frame.size = CGSizeMake(280, 0);
aWebView.frame = frame;
float content_height = [[aWebView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] floatValue];
frame = aWebView.frame;
frame.size = CGSizeMake(280, content_height + 20);
aWebView.frame = frame;
NSLog(@"SIZES - %i - %i",old_height + 4,(int) frame.size.height);
if(old_height + 4 != frame.size.height){
[self.tableView reloadData];
}
}
Zurückgegeben Höhe für die Zelle:
return webview.frame.size.height + 20;
Nach dem ersten laden der Zelle ist nicht ausreichend dimensioniert werden. Es ist hart, um herauszufinden, wie dies zu tun. Ich muss dehnen Sie den gesamten Inhalt nach unten passt sich eine Zelle.
Danke.
- Ist es eine einzelne web-Ansicht tableview oder einer pro Zelle? Und ist die Tabelle zusätzliche Zeilen?
- Es hat 3 Sektionen mit je einer Zeile je. Der mittlere Abschnitt hat die uiwebview.
Du musst angemeldet sein, um einen Kommentar abzugeben.
UIWebView ist nicht speziell für die Arbeit in einem anderen scroller (wie UITableView);
Und um die Größe der Zelle, die Sie verwenden sollten, entweder
UITableView.rowHeight
- Eigenschaft oder die folgendenUITableViewDelegate
Methode :- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
Und durch die Art und Weise, [UITableView reloadData] ist in der Regel eine schlechte Entscheidung für die Tabelle zu aktualisieren.
Lief in das gleiche Problem und hier ist, wie ich es gelöst.
Was ich sagen kann, UIWebView nicht die Berechnung der Höhe richtig, bis es Hinzugefügt superview, die ' s verwurzelt, um ein Fenster. Also was ich getan habe: 1) erstellen der WebView mit einem alpha-Wert von 0, dann 2) fügen Sie es zu den Blick auf meine UIViewController, und dann 3) reparent es zu meinem UITableViewCell sobald Sie geladen ist und setzen Sie den alpha-1. Hier ist, was mein webViewDidFinishLoad aussieht.
In meinem Fall, ich bin nicht wiederverwenden meiner Ansicht Tabelle-Zellen, und ich habe eine Zeile pro web-Ansicht pro Abschnitt, so passen Sie Ihren code entsprechend.