From 2cb9078375b2d76165bb140393044d1fdb16392f Mon Sep 17 00:00:00 2001 From: Max Sokolov Date: Sat, 14 Nov 2015 01:25:23 +0300 Subject: [PATCH] ActionType improved --- Tablet/TableDirector.swift | 10 ++--- Tablet/TableRowBuilder.swift | 28 +++++++------- Tablet/Tablet.swift | 35 ++++++++++++------ .../UserInterfaceState.xcuserstate | Bin 19785 -> 19633 bytes TabletDemo/TabletDemo/ViewController.swift | 2 +- 5 files changed, 44 insertions(+), 31 deletions(-) diff --git a/Tablet/TableDirector.swift b/Tablet/TableDirector.swift index 5e81f42..6c1eda9 100644 --- a/Tablet/TableDirector.swift +++ b/Tablet/TableDirector.swift @@ -25,7 +25,7 @@ import Foundation Responsible for table view's datasource and delegate. */ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate { - + private weak var tableView: UITableView! private var sections = [TableSectionBuilder]() @@ -72,7 +72,7 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate private func triggerAction(action: ActionType, cell: UITableViewCell?, indexPath: NSIndexPath) -> AnyObject? { let builder = builderAtIndexPath(indexPath) - return builder.0.triggerAction(action.rawValue, cell: cell, indexPath: indexPath, itemIndex: builder.1) + return builder.0.triggerAction(action, cell: cell, indexPath: indexPath, itemIndex: builder.1) } internal func didReceiveAction(notification: NSNotification) { @@ -80,7 +80,7 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate if let action = notification.object as? Action, indexPath = tableView.indexPathForCell(action.cell) { let builder = builderAtIndexPath(indexPath) - builder.0.triggerAction(action.key, cell: action.cell, indexPath: indexPath, itemIndex: builder.1) + builder.0.triggerAction(.custom(action.key), cell: action.cell, indexPath: indexPath, itemIndex: builder.1) } } @@ -102,7 +102,7 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate let cell = tableView.dequeueReusableCellWithIdentifier(builder.0.reusableIdentifier, forIndexPath: indexPath) - builder.0.triggerAction(ActionType.configure.rawValue, cell: cell, indexPath: indexPath, itemIndex: builder.1) + builder.0.triggerAction(.configure, cell: cell, indexPath: indexPath, itemIndex: builder.1) return cell } @@ -144,7 +144,7 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate // MARK: UITableViewDelegate - actions public func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { - + let cell = tableView.cellForRowAtIndexPath(indexPath) if triggerAction(.click, cell: cell, indexPath: indexPath) != nil { diff --git a/Tablet/TableRowBuilder.swift b/Tablet/TableRowBuilder.swift index 6c3a27c..66a2924 100644 --- a/Tablet/TableRowBuilder.swift +++ b/Tablet/TableRowBuilder.swift @@ -21,12 +21,12 @@ import UIKit import Foundation -internal enum ActionHandler { +internal enum ActionHandler { - case actionBlock((data: ActionData) -> Void) - case actionReturnBlock((data: ActionData) -> AnyObject) + case actionBlock((data: ActionData) -> Void) + case actionReturnBlock((data: ActionData) -> AnyObject) - func call(data: ActionData) -> AnyObject { + func call(data: ActionData) -> AnyObject { switch (self) { case .actionBlock(let closure): @@ -67,6 +67,8 @@ public class TableRowBuilder : RowBuilder { self.items.appendContentsOf(items!) } } + + // MARK: Items manipulation public func appendItems(items: [I]) { @@ -86,23 +88,23 @@ public class TableRowBuilder : RowBuilder { return self } - public func action(key: ActionType, action: (data: ActionData) -> Void) -> Self { + public func action(actionType: ActionType, action: (data: ActionData) -> Void) -> Self { - actions[key.rawValue] = .actionBlock(action) + actions[actionType.key] = .actionBlock(action) return self } - public func action(key: ActionType, action: (data: ActionData) -> AnyObject) -> Self { + public func action(actionType: ActionType, action: (data: ActionData) -> AnyObject) -> Self { - actions[key.rawValue] = .actionReturnBlock(action) + actions[actionType.key] = .actionReturnBlock(action) return self } // MARK: Triggers - public func triggerAction(key: String, cell: UITableViewCell?, indexPath: NSIndexPath, itemIndex: Int) -> AnyObject? { + public func triggerAction(actionType: ActionType, cell: UITableViewCell?, indexPath: NSIndexPath, itemIndex: Int) -> AnyObject? { - if let action = actions[key] { + if let action = actions[actionType.key] { return action.call(ActionData(cell: cell as? C, indexPath: indexPath, item: items[itemIndex], itemIndex: itemIndex)) } return nil @@ -122,10 +124,10 @@ public class TableConfigurableRowBuilder AnyObject? { - + public override func triggerAction(actionType: ActionType, cell: UITableViewCell?, indexPath: NSIndexPath, itemIndex: Int) -> AnyObject? { + (cell as? C)?.configureWithItem(items[itemIndex]) - return super.triggerAction(key, cell: cell, indexPath: indexPath, itemIndex: itemIndex) + return super.triggerAction(actionType, cell: cell, indexPath: indexPath, itemIndex: itemIndex) } } diff --git a/Tablet/Tablet.swift b/Tablet/Tablet.swift index d9fbf9e..5c6f0ee 100644 --- a/Tablet/Tablet.swift +++ b/Tablet/Tablet.swift @@ -24,20 +24,31 @@ import Foundation internal let kActionPerformedNotificationKey = "_action" /** - Built in actions that Tablet provides. + The actions that Tablet provides. */ -public enum ActionType : String { +public enum ActionType { - case click = "_click" - case select = "_select" - case deselect = "_deselect" - case configure = "_configure" - case willDisplay = "_willDisplay" - case shouldHighlight = "_shouldHighlight" - case height = "_height" + case click + case select + case deselect + case configure + case willDisplay + case shouldHighlight + case height + case custom(String) + + var key: String { + + switch (self) { + case .custom(let str): + return str + default: + return "_\(self)" + } + } } -public struct ActionData { +public class ActionData { public let cell: C? public let item: I @@ -83,7 +94,7 @@ public class Action { /** If you want to delegate your cell configuration logic to cell itself (with your view model or even model) than - just provide an implementation of this protocol for your cell. Enjoy strong typisation. + just provide an implementation of this protocol for your cell. Enjoy safe-typisation. */ public protocol ConfigurableCell { @@ -102,5 +113,5 @@ public protocol RowBuilder { var numberOfRows: Int { get } var reusableIdentifier: String { get } - func triggerAction(key: String, cell: UITableViewCell?, indexPath: NSIndexPath, itemIndex: Int) -> AnyObject? + func triggerAction(actionType: ActionType, cell: UITableViewCell?, indexPath: NSIndexPath, itemIndex: Int) -> AnyObject? } \ No newline at end of file diff --git a/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate b/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate index 0a16516435f0dc4e8e84ace46b1e8ff879919f73..701e1e2e5e4ce2af9ff6030b4c9cfa109913a0c3 100644 GIT binary patch delta 10304 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 Af&c&j diff --git a/TabletDemo/TabletDemo/ViewController.swift b/TabletDemo/TabletDemo/ViewController.swift index 842f30e..fd74961 100644 --- a/TabletDemo/TabletDemo/ViewController.swift +++ b/TabletDemo/TabletDemo/ViewController.swift @@ -37,7 +37,7 @@ class ViewController: UIViewController { data.cell!.textLabel?.text = "" - print("custom action indexPath: \(data.indexPath), item: \(data.item)") + print("click action indexPath: \(data.indexPath), item: \(data.item)") } .action(kConfigurableTableViewCellButtonClickedAction) { data in