我正在尝试使用动画从tableview中删除行,但是在大多数情况下,它会卡住。 15次尝试中有1次将导致播放此动画。这是我的删除动作:
func contextualDeleteAction(forRowAtIndexPath indexPath: IndexPath) -> UIContextualAction {
let action = UIContextualAction(style: .destructive,
title: "Delete") { (contextAction: UIContextualAction, sourceView: UIView, completionHandler: (Bool) -> Void) in
Model().context.delete(notesArray[indexPath.row])
notesArray.remove(at: indexPath.row)
self.myTableView.deleteRows(at: [indexPath], with: UITableView.RowAnimation.bottom)
Model().saveItems()
}
action.title = "Delete"
return action
}
当按下删除按钮时。
我也尝试使用tableView.beginUpdate()和tableView.endUpdate(),但没有得到不同的结果。
答案 0 :(得分:3)
问题在于您已经忘记了此方法的主要职责:必须调用完成处理程序!
Model().context.delete(notesArray[indexPath.row])
notesArray.remove(at: indexPath.row)
self.myTableView.deleteRows(at: [indexPath], with: UITableView.RowAnimation.bottom)
Model().saveItems()
completionHandler(true) // <-- look!
答案 1 :(得分:0)
在Swift 4
中,您可以执行删除动画,就像iPhone Messages动画一样。
使用此:
tableView.deleteRows(at: [indexPath], with: UITableViewRowAnimation.automatic)