编辑 tableview Swift 的行高
Posted
技术标签:
【中文标题】编辑 tableview Swift 的行高【英文标题】:Edit the row height for tableview Swift 【发布时间】:2015-04-15 08:11:43 【问题描述】:在 tableView 中我有一个 web 视图,高度单元格应该等于 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(code=2,address=0x306d2c): 那么如何根据 webview 高度使单元格的高度动态化? 谢谢。
【问题讨论】:
【参考方案1】:EXC_BAD_ACCESS
的原因是您试图访问 tableView 的 heightForRowAtIndexPath:
方法中的单元格。该单元格尚未创建且不存在。
tableview 调用heightForRowAtIndexPath:
方法后跟cellForRowAtIndexPath:
来创建单元格。
首先调用heightForRowAtIndexPath:
以获取索引路径处单元格的高度。在调用此cellForRowAtIndexPath:
之后,会在其中为相应的索引路径创建单元格。
由于在cellForRowAtIndexPath:
中创建了单元格,并且在此之前调用了heightForRowAtIndexPath:
,因此您无法访问那里的单元格(因为它尚未创建,否则EXC_BAD_ACCESS
如上所述)。为了返回相应索引路径的单元格的动态高度,您应该根据数据模态计算高度,而不是尝试访问单元格。
【讨论】:
你的意思是创建一个 webView 变量,并尝试计算它的高度,然后为 heightForRowAtIndexPath 返回这个高度?? 如果您能够仅使用 heightForRowAtIndexPath: 中的数据计算单元格的高度,那么您应该在此处计算高度,否则插入检查是否(动态高度计算)返回单元格DynamicHeight 否则返回默认高度。返回默认高度后,在 cellForRowAtIndexPath: 内创建单元格并在那里创建 web 视图,让内容加载成功时正在加载的内容,而不是根据内容计算高度,更新 modal 并重新加载相应的行。 重新加载对应的行会从heightForRowAtIndexPath返回这次动态计算的高度: 你有关于单元格动态高度的例子吗? 详细教程可以参考raywenderlich.com/87975/…以上是关于编辑 tableview Swift 的行高的主要内容,如果未能解决你的问题,请参考以下文章
奇怪的行为设置 tableView 行高和 scrollPosition Swift
Swift - tableView 行高仅在滚动或切换展开/折叠后更新
tableview 的行高没有变化,CollectionView 正在捕获所有未使用的空间,而不是在 tableViewCell 中调整自身大小