UITableViewCell删除滑动动画丑陋

时间:2018-01-25 07:01:41

标签: ios swift uitableview

我有以下问题。当我从UITableView中删除UITableViewCells并使用“轻扫删除”时,我看到了UITableView的丑陋行为。无论我在deleteRows方法中选择哪个动画,所有删除都会导致相同的奇怪行为。

这是我删除单元格的代码

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        print("Deleted")

        self.tvItems.beginUpdates()

        if(indexPath.section == 0){
            Shoppingcart.shared.removeItemForId(ident: indexPath.row)
        }else if (indexPath.section == 1){
            Shoppingcart.shared.serviceContent.remove(at: indexPath.row)
        }

        if let parent = self.parent as? CollectionViewController{
            parent.collectionView?.reloadData()
        }
        self.tvItems.deleteRows(at: [indexPath], with: .fade)

        self.tvItems.endUpdates()

    }
}  

这是一个破碎动画的图像:

See the broken animation here

2 个答案:

答案 0 :(得分:3)

我找到了解决问题的方法。 tableviewcell高度估计是自动设置的。我确实设置了与行高相同的高度,并且破碎的动画消失了。

破碎动画的设置:

Wrong

工作动画的设置:

Right

答案 1 :(得分:0)

我在这方面遇到了很多麻烦。将完成(真)移动到顶部而不是底部解决了问题。希望它可以帮助那里的人!

    alert.addAction(UIAlertAction(title: "Delete", style: .destructive) { (action) in
        completion(true) // *** PUT THIS HERE!!! ****
        self.searchFoodView.beginUpdates()
        self.foodMachine.deleteFood(at: indexPath.row - 1)
        self.searchFoodView.deleteRows(at: [indexPath], with: .fade)
        self.searchFoodView.endUpdates()
    })