编辑时动态增加UITableViewCell的高度(单个单元格)

时间:2016-01-04 14:56:41

标签: uitableview swift2

如何在编辑时增加行(单元格)的大小,与添加新联系人时相同(文本字段的高度随着我们输入更多文本而增加)[![field into contact] [1]] [1]

忽略此图片enter image description here

中的标签 我正在谈论一个单细胞,我已经看到很多与此相关的问题,但没有一个是快速的,我的主要语言很快,所以我无法弄清楚如何处理这个,但我试过这个: -

    tableView.rowHeight = UITableViewAutomaticDimension;
    tableView.estimatedRowHeight = 44;

但它在编辑时不起作用然后我试图在我的tableView单元格中的textView中获取内容的大小,并根据textView的内容大小调整tableView单元格的大小: -

     override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {



    tableView.rowHeight = UITableViewAutomaticDimension;
    tableView.estimatedRowHeight = 44;



    return txtViewDescription.contentSize.width
}

但它增加了所有单元格的大小而在编辑textview时没有做任何事情,我知道正在尝试的不是正确的方法,如果有人知道我怎么能处理这个,那么请指导我它会非常对我有帮助:)如果我的问题不够明确,请让我知道我会解决它

1 个答案:

答案 0 :(得分:0)

你走在正确的道路上。

您无需一直设置tableView.rowHeight = UITableViewAutomaticDimension;tableView.estimatedRowHeight = 44; - 您可以在初始设置时执行一次(可能是viewDidLoad

您需要做的事情如下所示。

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {

  if indexPath == indexPathOfCellBeingEdited {
    txtViewDescription.contentSize.width
  } else {
    return 44
  }

}

基本上这个函数将为每一行调用一次,因此在决定是否返回计算高度的默认高度之前,您需要查看您所在的行。

为了强制tableView重新计算您可能需要调用的行的高度

tableView.beginUpdates()
tableView.endUpdates()