每个单元格中都有UIWebView的UITableView

时间:2013-12-26 10:22:59

标签: ios objective-c uitableview

我希望每个单元格中都有UITableView UIWebViewUIWebView应该包含contentSize,以便在不滚动的情况下显示其整个内容。我的问题是HeightForRowAtIndexPath,因为必须首先加载内容才能返回值。

2 个答案:

答案 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中:

  1. 返回单元格的preferredHeight(如果没有内容则返回0)

  2. 您还实现了委托- (void)tableCellDidLoadContent:(M42WebviewTableViewCell*)cell;

  3. 您重新加载表格会使所有高度无效。当您现在返回preferredHeight时,它是有效的,并且视图显示正常。