实现tablecell淡入淡出删除

时间:2017-01-31 20:37:27

标签: swift uitableview swift3

我跟随this answer获得了那个漂亮的褪色删除单元格。目前,当我滑动删除时,它是尖锐的,突然的和丑陋的。当删除单元格时,其他应用程序会有很好的淡入淡出。

在我的应用中,单元格并未真正删除,数据已删除:

Swift 3,func editingStyle:

let tableSection = sections[sortedSections[indexPath.section]]
let tableItem = tableSection![indexPath.row]

// Removes item from array:
self.incomesDictionary.removeValue(forKey: tableItem.incomeId)

// Reloading the table data:
self.tableView.reloadData()

当我在self.tableView.deleteRows(at: [indexPath], with: .fade)上方添加...reloadData()时,我收到错误消息:

  

以NSException类型的未捕获异常终止

如果我使用tableSection?.remove(at: indexPath.row)更新功能,它仍然会崩溃。有任何提示可以获得平稳的效果吗?

修改

我有一个以编程方式分组的单元格,添加.fade后我得到的错误是:

  

由于未捕获的异常终止应用程序' NSInternalInconsistencyException',原因:'尝试从第0部分删除第0行,但在更新之前只有0部分'

2 个答案:

答案 0 :(得分:0)

Swift 5.0

https://www.hackingwithswift.com/example-code/uikit/how-to-swipe-to-delete-uitableviewcells

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
        if editingStyle == .delete {
            self.myArray.remove(at: indexPath.row)
            tableView.deleteRows(at: [indexPath], with: .fade)
        }

    }

答案 1 :(得分:-1)

试试这个:

self.tableView.beginUpdates()
self.tableView.deleteRows(at: [indexPath], with: .fade)
self.tableView.endUpdates()

这将为动画准备tableView