ios - 如何更改已加载的表格单元格的高度?

标签 ios uitableview uiwebview heightforrowatindexpath

目前,我在自定义的 uitableview 单元格中加载了 webviews。问题是 WebView 的大小可变。在 webViewDidFinishLoad 中,我可以根据 html 文档的实际大小设置 web View 的大小。我的问题是表格单元格在 web View 完成加载之前已经在 heightForRowAtIndexPath 中设置了高度。如何在加载表格单元格后更改它的高度?

理想情况下,我觉得我应该能够使用这样的代码行。

cellW.frame = cellW.cellWebView.frame;

但是我似乎无法访问 heightForRowAtIndexPath 中的单元格信息。我觉得我已经很好地解释了这种情况,但是您认为我应该发布的任何代码都可以放在这里。我已经尝试了很多东西(所以到处都有评论和失败的尝试),但主要问题是我似乎无法在正确的地方访问单元格信息,例如 heightForRowAtIndexPath。如果我什至可以在 webViewDidFinishLoad 中以某种方式设置单元格信息,我可以简单地设置单元格的框架,我也可以在其中设置 Web View 的框架大小。

下面是我的表格单元格子类的设置。

#import <UIKit/UIKit.h>
#import "DefinitionsAndConstants.h"

@interface UITableViewCellWebView : UITableViewCell
{
    UIWebView *cellWebView;
}

@property (nonatomic,retain) UIWebView *cellWebView;
@end

这是我上次尝试使用部分 Gavin 的代码时所做的尝试。但是,既然我已经退出,当然没有办法设置表格单元格,因为 cellForRowAtIndexPath 不可分配。

-(void)webViewDidFinishLoad:(UIWebView *)webViews {
    [webViews stringByEvaluatingJavaScriptFromString:@"twitterfy()"];
    [webViews stringByEvaluatingJavaScriptFromString:@"document.getElementById('tweettext').innerHTML=tweet"];
    NSString* h = [webViews stringByEvaluatingJavaScriptFromString:@"getDocHeightMax()"];
    int height = [h intValue];
    webViews.frame = CGRectMake(0.0f, 0.0f, 320.0f, height);

    NSString* i = [webViews stringByEvaluatingJavaScriptFromString:@"return indexPath"];
    int ii = [i intValue];
    NSIndexPath* ip = [NSIndexPath indexPathForRow:ii inSection:0];

    UITableViewCellWebView *tableCell = (UITableViewCellWebView *)[self.tableView cellForRowAtIndexPath:ip];

    if (tableCell) {
        tableCell.frame = webViews.frame;
    }

    NSLog(@"Got height from webview %d", height);
}

最佳答案

我会设置一个可变数组来读取高度。在viewDidLoad中,你必须分配一些起始值(可能只是一堆@"44.0",这并不重要,它不会被使用很多)。在您的 heightForRowAtIndexPath: 中,只需返回该数组中的数字。然后在 webViewDidFinishLoad 中,将数组中的高度替换为该单元格实际需要的高度(我相信你发布的代码中的 NSString *h),然后调用reloadData 在您的 TableView 上。 reloadData 将命中 heightForRowAtIndexPath:,这将查看高度数组,该数组现在具有该单元格所需的实际高度,因此一切都应该 Shiny 。

关于ios - 如何更改已加载的表格单元格的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20666405/

相关文章:

ios - 自动调整表格 View 单元格中 UILabel 中的行数

ios - 加载时未出现 UITableViewCell 字幕

iphone - UIWebView 没有使用 ARC 释放所有事件字节

ios - 无线 iphone 应用程序分发 - itms-services 协议(protocol)问题

ios - 从 UITableView 取消注册 UINib

ios - Xamarin 表单 : Device. OpenUri 无法在 iPhone 中打开 pdf

ios - 将选定的项目值快速传递给新的 View Controller

ios - 单击后退按钮时如何传递数据?

swift - WKWebView 或 WebView 的麦克风访问

swift - 在后台定期检查网页