From f4d59fedcb44a31b08b01973f9df9004ef17cd0c Mon Sep 17 00:00:00 2001 From: Max Sokolov Date: Wed, 11 Nov 2015 01:15:50 +0300 Subject: [PATCH] actions expreriments --- Tablet/Tablet.swift | 73 +++++++++++++++--- .../UserInterfaceState.xcuserstate | Bin 21145 -> 22974 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 ++ TabletDemo/TabletDemo/ViewController.swift | 6 +- 4 files changed, 69 insertions(+), 15 deletions(-) create mode 100644 TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist diff --git a/Tablet/Tablet.swift b/Tablet/Tablet.swift index f6cd97f..8209a5b 100644 --- a/Tablet/Tablet.swift +++ b/Tablet/Tablet.swift @@ -34,8 +34,6 @@ public enum ActionType : String { case configure = "_configure" case willDisplay = "_willDisplay" case shouldHighlight = "_shouldHighlight" - - } public struct ActionData { @@ -54,13 +52,39 @@ public struct ActionData { } } +public enum ActionResult { + + case Success(returnValue: AnyObject) + case Failure + + /// Returns true if the result is a success, false otherwise. + public var isSuccess: Bool { + switch self { + case .Success: + return true + case .Failure: + return false + } + } +} + +/** + A custom action that you can trigger from your cell. + You can eacily catch actions using a chaining manner with your row builder. +*/ public class Action { + /// The cell that triggers an action. public let cell: UITableViewCell + + /// The action unique key. public let key: String + + /// The custom user info. public let userInfo: [NSObject: AnyObject]? public init(key: String, sender: UITableViewCell, userInfo: [NSObject: AnyObject]? = nil) { + self.key = key self.cell = sender self.userInfo = userInfo @@ -72,6 +96,11 @@ public class Action { } } +public class ActionObject { + + +} + /** 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. @@ -93,7 +122,7 @@ public protocol ReusableRowBuilder { var numberOfRows: Int { get } var reusableIdentifier: String { get } - func triggerAction(key: String, cell: UITableViewCell, indexPath: NSIndexPath, itemIndex: Int) -> Bool + func triggerAction(key: String, cell: UITableViewCell, indexPath: NSIndexPath, itemIndex: Int) -> ActionResult } /** @@ -167,15 +196,15 @@ public class TableRowBuilder : ReusableRowBuilder // MARK: Triggers - public func triggerAction(key: String, cell: UITableViewCell, indexPath: NSIndexPath, itemIndex: Int) -> Bool { + public func triggerAction(key: String, cell: UITableViewCell, indexPath: NSIndexPath, itemIndex: Int) -> ActionResult { let actionData = ActionData(cell: cell as! C, indexPath: indexPath, item: items[itemIndex], itemIndex: itemIndex) if let block = actions[key] { block(data: actionData) - return true + return .Failure } - return false + return .Failure } } @@ -192,7 +221,7 @@ public class TableConfigurableRowBuilder Bool { + public override func triggerAction(key: String, cell: UITableViewCell, indexPath: NSIndexPath, itemIndex: Int) -> ActionResult { (cell as! C).configureWithItem(items[itemIndex]) @@ -259,7 +288,7 @@ public class TableSectionBuilder { } /** - A class that actualy handles table view's datasource and delegate. + Responsible for table view's datasource and delegate. */ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate { @@ -306,12 +335,17 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate return sections[indexPath.section].builderAtIndex(indexPath.row)! } - private func triggerAction(action: ActionType, cell: UITableViewCell?, indexPath: NSIndexPath) -> Bool { + private func triggerAction(action: ActionType, cell: UITableViewCell?, indexPath: NSIndexPath) -> ActionResult { let builder = builderAtIndexPath(indexPath) return builder.0.triggerAction(action.rawValue, cell: cell!, indexPath: indexPath, itemIndex: builder.1) } + private func trigger() -> AnyObject { + + return 100 + } + internal func didReceiveAction(notification: NSNotification) { if let action = notification.object as? Action, @@ -383,11 +417,21 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate public func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let cell = tableView.cellForRowAtIndexPath(indexPath) - if triggerAction(.click, cell: cell, indexPath: indexPath) { + + let a = triggerAction(.click, cell: cell, indexPath: indexPath) + switch a { + case .Success(let returnValue): + print(returnValue) + case .Failure: + print("") + } + + + /*if triggerAction(.click, cell: cell, indexPath: indexPath) { tableView.deselectRowAtIndexPath(indexPath, animated: true) } else { triggerAction(.select, cell: cell, indexPath: indexPath) - } + }*/ } public func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { @@ -402,6 +446,11 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate public func tableView(tableView: UITableView, shouldHighlightRowAtIndexPath indexPath: NSIndexPath) -> Bool { - return false + return true + } + + public func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { + + return trigger() as! CGFloat } } \ 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 daf4a1ae6ef4382ff03e0752c1edcbec2e236f3c..14c3ca349df8548a7d54b72f47381ddbe096e21a 100644 GIT binary patch literal 22974 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 diff --git a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ b/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/TabletDemo/TabletDemo/ViewController.swift b/TabletDemo/TabletDemo/ViewController.swift index ca9f5e8..73f99c6 100644 --- a/TabletDemo/TabletDemo/ViewController.swift +++ b/TabletDemo/TabletDemo/ViewController.swift @@ -17,10 +17,10 @@ class ViewController: UIViewController { super.viewDidLoad() tableDirector = TableDirector(tableView: tableView) - + let rowBuilder = TableRowBuilder(items: [1, 2, 3, 4], id: "cell") .action(.configure) { data in - + data.cell.textLabel?.text = "\(data.item)" } @@ -35,7 +35,7 @@ class ViewController: UIViewController { } .action(.shouldHighlight) { _ in - return false + return 90 } let sectionBuilder = TableSectionBuilder(headerTitle: "Tablet", footerTitle: "Deal with table view like a boss.", rowBuilders: [rowBuilder, configurableRowBuilder])