iOS 11 删除后viewForHeaderInSection视图上方的UITableViewCell

iOS 11 UITableViewCell above viewForHeaderInSection view after deleting

我有简单的 UITableViewController。

查看页眉。从 xib 初始化。 和单一类型的细胞。

滑动删除单元格后,上面删除的单元格在HeaderView上方可见,而其他单元格只是隐藏在HeaderView下方。

如果上面的内容不清楚 - 问。

视频:https://youtu.be/aX-iPnM3q4Q

我认为这应该可以解决问题:

tableView.sendSubview(toFront: tableView.headerView(forSection: 0)!)

(假设您只有 1 个部分)

您可以在删除单元格后进行设置,例如 commitEditingStyle

找到解决方案。

func deleteItem(from indexPath: IndexPath, tableView: UITableView) {
    cellsData.remove(at: indexPath.row)
    CATransaction.begin()
    tableView.beginUpdates()
    CATransaction.setCompletionBlock {
        tableView.reloadData()
    }
    tableView.deleteRows(at: [indexPath], with: .left)
    tableView.endUpdates()
    CATransaction.commit()
}

tableView.reloadData() 执行固定出现在 headerView 上方的单元格的操作,但会终止动画。所以如果你不关心动画你可以只添加 reloadData()。