SwiftSortableTableViews
适用于 OSX 和 iOS
概览
SwiftSortableTableViews 是 UITableView 的扩展,能夠将 UITableViewCells 从一个 TABLE 中的一个拖拽到另一个 TABLE。示例项目在: https://github.com/briankeane/SwiftSortableTableViewsExample
安装
将以下内容添加到您的 Cocoapods 目标
pod 'SwiftSortableTableViews', '~>0.1.1'
设置
将故事板的 UITableView 类设置为 SortableTableView
。然后在 viewDidLoad
方法中为它们各自分配 SortableTableViewDataSource 和 SortableTableViewDelegate,并创建一个 SortableTableViewHandler,将它传递一个 ViewController 的视图和要使用的 SortableTableViews 数组。
import SwiftSortableTableViews
class ViewController: UIViewController,SortableTableViewDelegate, SortableTableViewDataSource {
@IBOutlet weak var numbersTableView: SortableTableView!
@IBOutlet weak var lettersTableView: SortableTableView!
var sortableHandler:SortableTableViewHandler!
override func viewDidLoad() {
super.viewDidLoad()
self.numbersTableView.sortableDelegate = self
self.numbersTableView.sortableDataSource = self
self.lettersTableView.sortableDelegate = self
self.lettersTableView.sortableDataSource = self
self.sortableHandler = SortableTableViewHandler(view: self.view,
sortableTableViews: [
self.numbersTableView,
self.lettersTableView
])
}
SortableTableViewDataSource
必须处理当一项从一个列表移动到另一个列表时底层数据的转移。.
SortableTableViewDataSource 允许您通过提供两种 SortableTableViewDataSource 函数之一来在接收表或释放表中处理这种情况:
-
)function sortableTableView(将要释放的项目(
- 此函数在释放 SortableTableView 上调用
-
)function sortableTableView(将要接收的项目(
- 此函数在接收 TableView 上调用
如果对象移动到同一表中的新的 indexPath,那么在此函数中修改底层数据
function sortableTableView(将要放置的项目(
其他数据源函数
function sortableTableView(是否应接收项目(
- 返回
false
以取消移动
function sortableTableView(是否应释放项目(
- 返回
false
以取消移动
function sortableTableView(是否可以捡起(
- 返回
false
并且无法捡起项目。
function sortableTableView(项目已被捡起(
- 捡起完成后在项目原始表中调用
function sortableTableView(项目移动已取消(
- 在移动取消后在原始表中调用。
SortableTableViewDelegate
这些函数是在通常的 UITableViewDelegate 函数之外的
function sortableTableView(被拖动的项目进入TableView行(
- 当项拖动到 TableView 上时调用
function sortableTableView(被拖动的项目从TableView行退出(
- 当项拖动到 TableView 上时调用
注释
- 在调用 dequeueReusableCell(withIdentifier:)时不要指定for indexPath: -- 这会导致单元格的位置发生改变,提供特定的 IndexPath 会破坏内部一致性。
- 目前只支持表格的一个分区。