在iOS 10的Clock应用程序中,在编辑和默认样式之间切换单元格会带来平滑的动画过渡(如下面的录制中所示)
我正在尝试为包含tableview的简单应用复制此转换,但我不知道如何实现动画转换。
我的编辑样式更改的应用代码位于
之下ViewController.swift
...
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
//Model array for cell data - omitted population of array for simplicity
var notes = [Note]()
//cell editing style
var cellStyleForEditing: UITableViewCellEditingStyle = .none
//The tableview
@IBOutlet weak var NoteTable: UITableView!
...
@IBAction func enableEdittingBttn(_ sender: AnyObject) {
if(cellStyleForEditing == .none) {
cellStyleForEditing = .delete
self.NoteTable.reloadData()
} else {
cellStyleForEditing = .none
self.NoteTable.reloadData()
}
}
//delegate function sets cell editing style on table load/reload
func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
return cellStyleForEditing
}
...
//omitted tableview delegate methods
}
正如您所看到的,我通过在更改表格的单元格编辑样式后重新加载表格数据来实现单元格样式的更改。
为简单起见,我省略了所有不相关的代码。
答案 0 :(得分:2)
在启用或禁用编辑时,不要重新加载表格数据,而是使用动画true
调用setEditing(_:animated:)
。
if(cellStyleForEditing == .none) {
cellStyleForEditing = .delete
} else {
cellStyleForEditing = .none
}
NoteTable.setEditing(cellStyleForEditing != .none, animated: true)