У меня есть UITableView с пользовательской ячейкой, содержащей UIWebView. Я пытаюсь перезагрузить ячейку с правильной высотой после того, как веб-просмотр завершит загрузку содержимого html.UITableView reloadRowsAtIndexPaths постоянно перезагружает ячейку
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
}
В методе делегата webViewDidFinishLoad я пытаюсь перезагрузить ячейку, содержащую веб-просмотр.
func webViewDidFinishLoad(aWebView: UIWebView) {
let indexPath = NSIndexPath(forRow: aWebView.tag, inSection: 0)
self.tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
}
При запуске приложения ячейка, содержащая веб-просмотр, постоянно перезагружается. Высота кажется правильной и по желанию, но вы можете видеть перезагрузку ячеек без остановок. Я не могу понять, почему он постоянно перезагружается. Содержимое HTML, которое я загружаю, является простым HTML и не имеет нескольких/бесконечных фреймов, поэтому webViewDidFinishLoad постоянно вызывается. Я также попытался пересчитать и установить высоту ячейки в webViewDidLoad, но высота, похоже, не рассчитана правильно.