Swift和动态UITableView行高

时间:2015-08-17 21:59:22

标签: ios swift uitableview

我的桌子中间有一些行需要根据内容调整其高度。详细信息标签可以包含很长的CSV值列表,我试图弄清楚如下:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if(indexPath.section == 0){
        return 176;
    }
    if(indexPath.section == 1){
        if let cell = tableView.cellForRowAtIndexPath(indexPath) {

            cell.detailTextLabel!.frame.size = CGSize(width: view.bounds.size.width - 115, height: 10000)
            cell.detailTextLabel!.sizeToFit()
            cell.detailTextLabel!.frame.origin.x = view.bounds.size.width - cell.detailTextLabel!.frame.size.width - 15
            return cell.detailTextLabel!.frame.size.height + 20
        }
    }
    return 44;
}

但是我收到了EXEC_BAD_ACCESS错误:

if let cell = tableView.cellForRowAtIndexPath(indexPath)

为什么我会收到此错误或正确解决此问题的方法?

1 个答案:

答案 0 :(得分:1)

你正试图抓住一个尚不存在的细胞。 cellForRowAtIndexPath(_ indexPath: NSIndexPath) -> UITableViewCell?返回的单元格是您创建并在tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell中返回的单元格。因此,您正在尝试通过获取单元格来计算尚不存在的单元格的高度(同样,该单元格尚不存在)。看起来你想要的是原型假的占位符单元格,你可以设置它来获得真实单元格的高度。为此,您可以将单个单元格作为委托/数据源类的属性,将该单元格设置为一次,然后在您尝试使用高度方法时返回其高度。