编辑tableview Swift的行高

时间:2015-04-15 08:11:44

标签: ios uitableview swift

在tableView中我有一个Web视图,而height单元格应该等于webView,我试图通过以下代码编辑单元格的行高:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    let cell = tableView.cellForRowAtIndexPath(indexPath) as ActivitiesCell

    return cell.webView.scrollView.contentSize.height
}

但是我在初始化var单元时遇到了这个异常:“线程1:EXC_BAD_ACCESS(代码= 2,地址= 0x306d2c): 那么如何根据webview高度使单元格的高度动态变化? 感谢。

1 个答案:

答案 0 :(得分:3)

EXC_BAD_ACCESS的原因是您尝试访问tableView的heightForRowAtIndexPath:方法中的单元格。该单元格尚未创建,并且不存在。

tableview调用heightForRowAtIndexPath:方法,后跟cellForRowAtIndexPath:来创建单元格。

调用第一个heightForRowAtIndexPath:以获取索引路径处单元格的高度。在调用cellForRowAtIndexPath:之后,为相应的索引路径创建了一个单元格。

cellForRowAtIndexPath:中创建单元格并在此之前调用heightForRowAtIndexPath:,因此您无法访问其中的单元格(因为它尚未创建,否则如上所述EXC_BAD_ACCESS)。并且为了返回相应索引路径的单元格的动态高度,您应该根据数据模态计算高度,而不是尝试访问单元格。