在tableview中嵌套webView最重要的是获取webView的高度.然而,webView的高度需要加载完webView之后,才能通过代理得到webView的高度.那么,我们就需要先加载webView
_webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, KScreenSize.width, 1)];
_webView.delegate = self;
_webView.scrollView.scrollEnabled = NO;
//预先加载url
NSURL *url = [NSURL URLWithString:@"http://www.51tsg.com/index.php?act=goods&m=1&goods_id=7008"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
通过代理得到webView的高度
- (void)webViewDidFinishLoad:(UIWebView *)webView {
//获取到webview的高度
CGFloat height = [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];
self.webView.frame = CGRectMake(self.webView.frame.origin.x,self.webView.frame.origin.y, KScreenSize.width, height);
[self.tableView reloadData];
}
设置cell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 1) {
return _webView.frame.size.height;
}
return 44;
}
最后,在cell中加载webView
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *ID = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
}
if (indexPath.row == 1) {
[cell.contentView addSubview:_webView];
}
return cell;
}
网友评论