使用UIWebView设置UITableViewCell的高度

时间:2016-09-13 01:04:15

标签: ios objective-c uitableview uiwebview

我的自定义UIWebView中有UITableViewCells。问题是我不太清楚如何动态调整UITableViewCell单元格的大小,因为在我知道webview的高度之前,单元格内的webview需要渲染。

我建议的解决方案如下:

CustomCell.m 符合UIWebViewDelegate,并在其内部的webview完成加载后,使用委托方法返回自己的高度。

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    CGFloat height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];
    [self.contentWebview setFrameHeight:height];
    [self.delegate cellDidFinishLoadingWithCell:self withHeight:height];
}

然后 TableViewController.m 符合单元格的委托,并通过执行以下操作重绘:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(nonnull NSIndexPath *)indexPath {
    return [self.heights[[NSString stringWithFormat:@"%i%i",indexPath.section,indexPath.row]] floatValue];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UIWebViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"webview-cell" forIndexPath:indexPath];
    MyData *d = self.data[indexPath.section];
    [cell setUpCellForData:d];
    [cell setDelegate:self];
    return cell;
}

- (void)cellDidFinishLoadingWithCell:(LessonTableViewCell *)cell withHeight:(CGFloat)height {
    NSIndexPath *indexPath = [self.tableview indexPathForCell:cell];
    NSString *key = [NSString stringWithFormat:@"%i%i",indexPath.section,indexPath.row];
    if (!self.heights[key]) {
        [self.heights setObject:[NSNumber numberWithFloat:height] forKey:key];
    }
    [self.tableview beginUpdates];
    [self.tableview endUpdates];
}

有些细胞似乎是正确的高度,但其中许多细胞最终的高度为0 ......

1 个答案:

答案 0 :(得分:0)

删除:

[self.tableView reloadData];

添加:

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^([www\.]*domain\.com)$ [NC]
RewriteCond %{REQUEST_URI} ^/.+$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} ^([www\.]*domain\.com)$ [NC]
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteRule ^(.*)$ https://www.domain.com/web [L,R=301]




这是Apple文档:
XPath 1.0
beginUpdates

reloadData