iOS 11 删除后viewForHeaderInSection视图上方的UITableViewCell
iOS 11 UITableViewCell above viewForHeaderInSection view after deleting
我有简单的 UITableViewController。
查看页眉。从 xib 初始化。
和单一类型的细胞。
滑动删除单元格后,上面删除的单元格在HeaderView上方可见,而其他单元格只是隐藏在HeaderView下方。
如果上面的内容不清楚 - 问。
我认为这应该可以解决问题:
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()。
我有简单的 UITableViewController。
查看页眉。从 xib 初始化。 和单一类型的细胞。
滑动删除单元格后,上面删除的单元格在HeaderView上方可见,而其他单元格只是隐藏在HeaderView下方。
如果上面的内容不清楚 - 问。
我认为这应该可以解决问题:
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()。