gpt4 book ai didi

objective-c - 根据内容在 UITableViewCell 中调整 UIWebView 的大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:23:42 24 4
gpt4 key购买 nike

我知道这已经被要求死了,我向你保证我已经通读了我能找到的关于这个主题的每一条线索。到目前为止,没有什么对我有用。这是我目前所拥有的...我知道 2000 的高度有点荒谬,但我正试图在 webView 中查看整个帖子。

- (void)viewDidLoad {

// Super
[super viewDidLoad];

_date = [NSDateFormatter localizedStringFromDate:[NSDate date]
dateStyle:NSDateFormatterShortStyle
timeStyle:NSDateFormatterShortStyle];

CGRect frame = _descriptionWebView.frame;
frame.size.width = 320;
frame.size.height = 2000;
_descriptionWebView.frame = frame;
_descriptionWebView = [[UIWebView alloc] initWithFrame:frame];
_descriptionWebView.delegate = self;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 2;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
switch (section) {
case 0: return 3;
default: return 1;
}

}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

// Get cell
static NSString *CellIdentifier = @"CellA";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
cell.textLabel.textColor = [UIColor blackColor];
cell.textLabel.font = [UIFont systemFontOfSize:15];

// Display
switch (indexPath.section) {
case SectionHeader: {

// Header
switch (indexPath.row) {
case SectionHeaderTitle:
cell.textLabel.font = [UIFont boldSystemFontOfSize:15];
cell.textLabel.text = _blogTitle;
cell.textLabel.numberOfLines = 2; // Multiline
break;
case SectionHeaderDate:
cell.textLabel.text = _date;
break;
case SectionHeaderURL:
cell.textLabel.text = [NSString stringWithFormat:@"By %@",_author];
cell.textLabel.textColor = [UIColor grayColor];
break;
}
break;

}
case SectionDetail: {

// Description
NSString* htmlString = _description;
[_descriptionWebView loadHTMLString:htmlString baseURL:nil];
[[cell contentView] addSubview:_descriptionWebView];
_descriptionWebView.scrollView.scrollEnabled = NO;
_descriptionWebView.scalesPageToFit = YES;


}
}

return cell;

这是我真正遇到麻烦的部分。我返回两个不同的高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == SectionHeaderTitle) {

// Regular
return 54;

} else {

NSInteger height = [[_descriptionWebView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] integerValue];

return height;
}
}

我发现了另一篇看起来很有希望的帖子......但是,请原谅我,因为我是新手,我无法克服它抛给我的错误。

- (void)webViewDidFinishLoad:(UIWebView *)webView {
CGRect frame = webView.frame;
frame.size = [webView sizeThatFits:CGSizeZero];
frame.size.height += 20.0f; // additional padding to push it off the bottom edge
webView.frame = frame;

webView.delegate = nil;

UITableViewCell *cell =[_cells objectAtIndex:webView.tag];
[cell.contentView addSubview:[_loadingWebView autorelease]];
cell.contentView.frame = frame;
[cell setNeedsLayout];

webView.alpha = 1.0f;

[self.tableView beginUpdates];
NSArray *paths = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:webView.tag]];
[self.tableView insertRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];

// Storing the currently loading webView in case I need to clean it up
// before it finishes loading.
_loadingWebView = nil;
}

特别是 UITableViewCell *cell =[_cells objectAtIndex:webView.tag]; 给我“'UITableViewCell' 没有可见的@interface 声明选择器'objectAtIndex。

谁能给我一些指导?我已经在这个问题上停留了好几天了。感谢阅读,即使您无能为力。

最佳答案

您不应将 UITableViewCells 存储在 _cells 数组中。这些单元格由 tableview 重复使用,因此单元格不会像 indexPaths 那样多。如果你想获得正确的单元格实例,你可以向 tableView 请求它:

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]

这只会返回可见的单元格。更好的解决方案是做一个

[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]
[self.tableView endUpdates];

当 webview 完成加载并让

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

处理单元格的布局。

关于objective-c - 根据内容在 UITableViewCell 中调整 UIWebView 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13335803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com