2015-04-15 52 views
0

在tableView我有一个web视图,并且高度单元格应该等于webView,我试图通过以下代码编辑单元格的行高度:编辑tableview的行高Swift

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高度的细胞活力的高度 感谢

回答

3

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

桌面视图调用heightForRowAtIndexPath:方法后跟cellForRowAtIndexPath:来创建单元格。

首先调用heightForRowAtIndexPath:以获取索引路径处的单元高度。在调用cellForRowAtIndexPath:之后,将为相应的索引路径创建单元。

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

+0

你打算创建一个webView变量,并尝试计算它的高度,然后返回heightForRowAtIndexPath的高度? – Rawan

+0

如果您能够使用heightForRowAtIndexPath中的数据计算单元格的高度,那么您应该计算其中的高度,否则插入一个检查if(动态高度计算)返回cellsDynamicHeight否则返回默认高度。 在cellForRowAtIndexPath中返回默认高度创建单元格:并创建web视图,让内容在成功加载时加载,而不是根据内容计算高度,更新模式并重新加载相应的行。 –

+0

重新加载相应的行将从heightForRowAtIndexPath返回动态计算的高度: –