我知道这已被要求死亡,我向你保证,我已经阅读了我在这个主题上可以找到的每一个主题。到目前为止,对我来说没有任何作用。这就是我到目前为止...我明白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。
有人可以给我一些指导吗?我好几天都被困在这个问题上了。感谢阅读,即使你无法帮助。
答案 0 :(得分:1)
您不应将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
处理单元格的布局。
答案 1 :(得分:0)
请使用此代码获取UITableViewCell
UITableViewCell *cell=[tbl_showing_Details cellForRowAtIndexPath:[NSIndexPath indexPathForRow:clickedTag inSection:section]];
其中tbl_showing_Details是你的表名,clickedTag是你单元格当前部分的一行,section是你当前的部分。
感谢。