我正在尝试使用具有多种单元格类型的UITableView。 我的一个单元格需要动态更改高度,同时在其中键入文本。 这是改变单元格高度的代码(在单元格的类中),这很好用:
func textViewDidChange(_ textView: UITextView)
{
var newFrame:CGRect = noteTextView.frame
newFrame.size.height = noteTextView.contentSize.height
noteTextView.frame = newFrame
self.frame = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: self.frame.width, height: noteTextView.contentSize.height)
}
但细胞覆盖着他下面的细胞。 在父tableView成员上添加这些行也没有帮助:
mParentTableView.setNeedsLayout()
mParentTableView.layoutIfNeeded()
知道如何告诉tableView重新计算其包含的单元格大小吗?
(XCode 9,Swift 4)
答案 0 :(得分:2)
在您的UITableViewCell
上设置委托
var textDidChanges: (() -> Void)? = nil
func textViewDidChange(_ textView: UITextView) {
textDidChanges?()
}
和您的tableView cellForRowAt
cell.textDidChanges = {
self.tableView.beginUpdates()
self.tableView.endUpdates()
}
答案 1 :(得分:1)
使用tableView' [tableView beginUpdates]
和[tableView endUpdates]
将解决此问题。有关详细信息,请参阅this answer。