当前我有webviews加载在自定义的uitableview单元格中。问题是Web视图具有可变大小。在webViewDidFinishLoad中,我可以根据html文档的实际大小设置Web视图的大小。我的问题是在web视图完成加载之前已经将其高度设置在heightForRowAtIndexPath中的表格单元格。如何在表格单元格已被加载后更改表格单元格的高度?如何更改已经加载的表格单元格的高度?
理想情况下,我觉得我应该能够使用这样的代码行。
cellW.frame = cellW.cellWebView.frame;
但是,我似乎无法访问heightForRowAtIndexPath中的单元格信息。我觉得我已经很好地解释了这种情况,但是你认为我应该发布的任何代码都可以放在这里。我已经尝试了很多东西(所以在这个地方有评论和失败的尝试),但主要问题是我似乎无法在正确的位置访问单元格信息,例如heightForRowAtIndexPath。如果我甚至可以在webViewDidFinishLoad中以某种方式设置单元格信息,那么我可以简单地设置单元格的框架,并在其中设置Web视图的框架大小。
下面是我的表格单元格子类的设置。
#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);
}
我的确发现了与此相关的其他问题,但他们都没有处理动态细胞高度。 – Caimen
你在哪里加载您的网页浏览?如果你只是在'viewDidLoad'中做,它应该在绘制表之前加载,对吧?对不起,如果这是一个愚蠢的问题 - 我以前没有使用过网页浏览。 – GeneralMike
Web视图在那里加载,但直到在heightForRowAtIndexPath已经执行之后的webViewDidFinishLoad才完成呈现内容。因此,直到webViewDidFinishLoad才计算内容的高度。 – Caimen