UITableView reloadSections不会触发viewForFooterInSection?

时间:2017-03-02 22:08:08

标签: ios swift uitableview tablefooterview

我正在尝试构建一个类似于iOS原生Reminders应用的应用。哪里有一个包含页眉和页脚的项目列表。每个单元格都包含UITextView,用户在键入时会动态更改单元格高度。页脚视图包含相同的单元格视图,除了我希望它是一个页脚,因此它将粘贴到底部视图。我将单元格设置为动态高度。

checklistTable.rowHeight = UITableViewAutomaticDimension
checklistTable.estimatedRowHeight = 60

checklistTable.sectionFooterHeight = UITableViewAutomaticDimension
checklistTable.estimatedSectionFooterHeight = 60

这是键入时更新单元格高度的逻辑,这适用于常规单元格,但不适用于页脚视图。我设置了一个断点 viewForFooterInSection,在初始加载后从未调用过。

func textViewDidChange(_ textView: UITextView) {

    let startHeight = textView.frame.size.height
    let calcHeight = textView.sizeThatFits(textView.frame.size).height

    if startHeight != calcHeight {
        UIView.setAnimationsEnabled(false)
        tableView?.beginUpdates()

        if cellType == .footer {
            tableView?.reloadSections(IndexSet(integer: 0), with: .automatic)
        }

        tableView?.endUpdates()
        UIView.setAnimationsEnabled(true)
    }
}

有人能指出我正确的方向吗?感谢

1 个答案:

答案 0 :(得分:2)

启用&在UIView&上禁用动画同时调用tableView?.beginUpdates()看起来含糊不清 简单地说,调用reloadSections应该有效,例如:

if startHeight != calcHeight {

        if cellType == .footer {
            tableView?.reloadSections(IndexSet(integer: 0), with: .automatic)
        }
    }