iOS - 同步加载UIWebView内容?

时间:2011-10-20 03:12:31

标签: iphone ios uitableview uiwebview

我有一个包含许多行的UITableView,每行包含一个UIWebView。此webView的内容存储在我的数据库中(在应用程序上),tableView中每个单元格的高度是根据我的UIWebView的滚动高度计算的。

问题在于,loadHtmlString方法异步工作,因此当调用UITableView的heighForRowAtIndexPath方法时,数据尚未在UIWebView中加载(因为它异步工作)。所以我无法计算出细胞所需的高度。

所以这就是问题,是否可以同步加载UIWebView的内容?我的html文本很短,因此同步加载它不需要那么长时间。

修改 是否可以计算html字符串的预期高度而不将其放在UIWebView中,我知道这可以使用纯文本,我不知道html

2 个答案:

答案 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