Ich habe eine UITableView mit einer benutzerdefinierten Zelle, die ein UIWebView enthält. Ich versuche, die Zelle mit der richtigen Höhe neu zu laden, sobald die Webansicht den HTML-Inhalt geladen hat.UITableView reloadRowsAtIndexPaths lädt die Zelle kontinuierlich
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
height = tableView.frame.size.height - tableView.contentSize.height
return height
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell!
cell = tableView.dequeueReusableCellWithIdentifier("bodyFieldCellIdentifier", forIndexPath: indexPath)
(cell as! SMBodyTableViewCell).frame = CGRect(x: 0, y: 0, width: width, height: height)
(cell as! SMBodyTableViewCell).bodyWebView.delegate = self
(cell as! SMBodyTableViewCell).bodyWebView.loadHTMLString(self.messageBody, baseURL: nil)
(cell as! SMBodyTableViewCell).bodyWebView.tag = indexPath.row
}
In der Delegate-Methode webViewDidFinishLoad versuche ich die Zelle mit dem Webview neu zu laden.
func webViewDidFinishLoad(aWebView: UIWebView) {
let indexPath = NSIndexPath(forRow: aWebView.tag, inSection: 0)
self.tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
}
Wenn ich die App ausführen, wird die Zelle mit dem Webview kontinuierlich neu geladen. Die Höhe scheint korrekt und wie gewünscht zu sein, aber Sie können sehen, dass die Zelle non-stop nachlädt. Ich kann nicht herausfinden, warum es ständig neu lädt. Der HTML-Inhalt, den ich lade, ist einfacher HTML und hat keine Mehrfach-/Endlos-Rahmen, so dass webViewDidFinishLoad kontinuierlich aufgerufen wird. Ich habe auch versucht, die Höhe der Zelle in webViewDidLoad neu zu berechnen und zu berechnen, aber die Höhe scheint nicht korrekt berechnet zu werden.