From cc02531b27ce26bad9842f28a39839b7c1a500e2 Mon Sep 17 00:00:00 2001 From: into Date: Tue, 8 May 2018 13:24:52 +0200 Subject: [PATCH 1/2] added: canDelete, editingStyle --- Sources/TableDirector.swift | 14 ++++++++++---- Sources/TableKit.swift | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Sources/TableDirector.swift b/Sources/TableDirector.swift index 548eafb..9088f45 100644 --- a/Sources/TableDirector.swift +++ b/Sources/TableDirector.swift @@ -257,7 +257,6 @@ open class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate { // MARK: UITableViewDelegate - actions open func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - let cell = tableView.cellForRow(at: indexPath) if invoke(action: .click, cell: cell, indexPath: indexPath) != nil { @@ -284,10 +283,10 @@ open class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate { } open func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { - if hasAction(.willSelect, atIndexPath: indexPath) { return invoke(action: .willSelect, cell: tableView.cellForRow(at: indexPath), indexPath: indexPath) as? IndexPath } + return indexPath } @@ -300,15 +299,22 @@ open class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate { return sections[indexPath.section].rows[indexPath.row].editingActions } - open func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { + open func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle { + if invoke(action: .canDelete, cell: tableView.cellForRow(at: indexPath), indexPath: indexPath) as? Bool ?? false { + return UITableViewCellEditingStyle.delete + } + return UITableViewCellEditingStyle.none + } + + open func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == .delete { invoke(action: .clickDelete, cell: tableView.cellForRow(at: indexPath), indexPath: indexPath) } } open func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool { - return invoke(action: .canMove, cell: tableView.cellForRow(at: indexPath), indexPath: indexPath) as? Bool ?? true + return invoke(action: .canMove, cell: tableView.cellForRow(at: indexPath), indexPath: indexPath) as? Bool ?? false } open func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) { diff --git a/Sources/TableKit.swift b/Sources/TableKit.swift index c2b10c9..f5f17ef 100644 --- a/Sources/TableKit.swift +++ b/Sources/TableKit.swift @@ -74,6 +74,7 @@ public enum TableRowActionType { case height case canEdit case configure + case canDelete case canMove case move case custom(String) From 21aab6256f51b5192e6b8ccade4171990e0d9f3e Mon Sep 17 00:00:00 2001 From: into Date: Tue, 8 May 2018 16:54:13 +0200 Subject: [PATCH 2/2] added: canMoveTo --- Sources/TableDirector.swift | 8 ++++++++ Sources/TableKit.swift | 2 ++ 2 files changed, 10 insertions(+) diff --git a/Sources/TableDirector.swift b/Sources/TableDirector.swift index 9088f45..132a411 100644 --- a/Sources/TableDirector.swift +++ b/Sources/TableDirector.swift @@ -307,6 +307,14 @@ open class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate { return UITableViewCellEditingStyle.none } + public func tableView(_ tableView: UITableView, shouldIndentWhileEditingRowAt indexPath: IndexPath) -> Bool { + return false + } + + public func tableView(_ tableView: UITableView, targetIndexPathForMoveFromRowAt sourceIndexPath: IndexPath, toProposedIndexPath proposedDestinationIndexPath: IndexPath) -> IndexPath { + return invoke(action: .canMoveTo, cell: tableView.cellForRow(at: sourceIndexPath), indexPath: sourceIndexPath, userInfo: [TableKitUserInfoKeys.CellCanMoveProposedIndexPath: proposedDestinationIndexPath]) as? IndexPath ?? proposedDestinationIndexPath + } + open func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == .delete { invoke(action: .clickDelete, cell: tableView.cellForRow(at: indexPath), indexPath: indexPath) diff --git a/Sources/TableKit.swift b/Sources/TableKit.swift index f5f17ef..5d554d5 100644 --- a/Sources/TableKit.swift +++ b/Sources/TableKit.swift @@ -26,6 +26,7 @@ struct TableKitNotifications { public struct TableKitUserInfoKeys { public static let CellMoveDestinationIndexPath = "TableKitCellMoveDestinationIndexPath" + public static let CellCanMoveProposedIndexPath = "CellCanMoveProposedIndexPath" } public protocol RowConfigurable { @@ -76,6 +77,7 @@ public enum TableRowActionType { case configure case canDelete case canMove + case canMoveTo case move case custom(String)