我有一个包含许多行的UITableView,每行包含一个UIWebView。此webView的内容存储在我的数据库中(在应用程序上),tableView中每个单元格的高度是根据我的UIWebView的滚动高度计算的。
问题在于,loadHtmlString
方法异步工作,因此当调用UITableView的heighForRowAtIndexPath
方法时,数据尚未在UIWebView中加载(因为它异步工作)。所以我无法计算出细胞所需的高度。
所以这就是问题,是否可以同步加载UIWebView的内容?我的html文本很短,因此同步加载它不需要那么长时间。
修改 是否可以计算html字符串的预期高度而不将其放在UIWebView中,我知道这可以使用纯文本,我不知道html
答案 0 :(得分:1)
你可以:
1)在第一次heighForForWowAtIndexPath调用时返回默认高度
2)加载HTML
3)等待事件webViewDidFinishLoad并在数组中存储最终高度
- (void)webViewDidFinishLoad:(UIWebView *)webView
4)通过调用
更新单元格高度 [self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
[self.tableView endUpdates];
5)调用heighForRowAtIndexPath时返回最终高度
答案 1 :(得分:0)
如果您的html很短,为什么不在其中放置一些内联CSS
,它显式设置文档height
的{{1}}参数,然后在加载之前解析该值它进入body
?