我希望每个单元格中都有UITableView
UIWebView
。 UIWebView
应该包含contentSize,以便在不滚动的情况下显示其整个内容。我的问题是HeightForRowAtIndexPath
,因为必须首先加载内容才能返回值。
答案 0 :(得分:1)
我将以这种(非常MVC)的方式继承UITableViewCell:
@interface CustomTableViewCell : UITableViewCell
@property (nonatomic,strong) id model;
+(CGFloat)heightForModel:(id)model;
@end
模型可以是您想要的任何东西。这是一个非常通用的例子
在 heightForModel 中,您可以计算单元格的确切高度。
在 CustomTableViewCell 的 init 方法中,您应该向单元格添加空白UIWebView。
当您“设置”模型属性时,您应该刷新单元格UI。
然后在实现委托方法的类中(假设单元模型存储在名为 models 的 NSArray 中):
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return [CustomTableViewCell heightForModel:self.models[indexPath.row]];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([CustomTableViewCell class])];
cell.model = self.models[indexPath.row];
return cell;
}
请记住注册自定义单元格!
答案 1 :(得分:1)
我在这个旧的,也许没有更新的代码中做了类似的事情: https://github.com/Daij-Djan/DDUtils/tree/master/ui/M42WebviewTableViewCell%20%5Bios%5D
免责声明:我自己的开源代码
工作原理: 在dataSource中:
返回单元格的preferredHeight(如果没有内容则返回0)
您还实现了委托- (void)tableCellDidLoadContent:(M42WebviewTableViewCell*)cell;
您重新加载表格会使所有高度无效。当您现在返回preferredHeight时,它是有效的,并且视图显示正常。