From 5b639c4483bcc950b75bdadffb2430777a88663e Mon Sep 17 00:00:00 2001 From: Max Sokolov Date: Tue, 10 Nov 2015 20:20:27 +0300 Subject: [PATCH] actionWithReturnValue --- Tablet/Tablet.swift | 21 ++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 11439 bytes .../xcschemes/TabletDemo.xcscheme | 91 ++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 22 +++++ TabletDemo/TabletDemo/ViewController.swift | 6 +- 5 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/TabletDemo.xcscheme create mode 100644 TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/Tablet/Tablet.swift b/Tablet/Tablet.swift index cb9b68b..f6cd97f 100644 --- a/Tablet/Tablet.swift +++ b/Tablet/Tablet.swift @@ -33,6 +33,9 @@ public enum ActionType : String { case deselect = "_deselect" case configure = "_configure" case willDisplay = "_willDisplay" + case shouldHighlight = "_shouldHighlight" + + } public struct ActionData { @@ -99,6 +102,7 @@ public protocol ReusableRowBuilder { public class TableRowBuilder : ReusableRowBuilder { public typealias TableRowBuilderActionBlock = (data: ActionData) -> Void + public typealias TableRowBuilderReturnValueActionBlock = (data: ActionData) -> AnyObject private var actions = Dictionary() private var items = [I]() @@ -149,6 +153,18 @@ public class TableRowBuilder : ReusableRowBuilder return self } + public func action(key: ActionType, action: TableRowBuilderReturnValueActionBlock) -> Self { + + + return self + } + + public func actionWithReturnValue(key: ActionType, action: (ActionData) -> Bool) -> Self { + + + return self + } + // MARK: Triggers public func triggerAction(key: String, cell: UITableViewCell, indexPath: NSIndexPath, itemIndex: Int) -> Bool { @@ -383,4 +399,9 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate triggerAction(.willDisplay, cell: cell, indexPath: indexPath) } + + public func tableView(tableView: UITableView, shouldHighlightRowAtIndexPath indexPath: NSIndexPath) -> Bool { + + return false + } } \ No newline at end of file diff --git a/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate b/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..463604bc827b712334ee2b0e707fadcb314a5b97 GIT binary patch literal 11439 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 %aB9lFq%S+vS--|2vMG6DSS>*c_QQZ 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/xcschememanagement.plist b/TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..c382e1a --- /dev/null +++ b/TabletDemo/TabletDemo.xcodeproj/xcuserdata/max.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + TabletDemo.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + DAB7EB261BEF787300D2AD5E + + primary + + + + + diff --git a/TabletDemo/TabletDemo/ViewController.swift b/TabletDemo/TabletDemo/ViewController.swift index 8dd2ca5..ca9f5e8 100644 --- a/TabletDemo/TabletDemo/ViewController.swift +++ b/TabletDemo/TabletDemo/ViewController.swift @@ -30,9 +30,13 @@ class ViewController: UIViewController { print("custom action indexPath: \(data.indexPath), item: \(data.item)") } .action(.click) { data in - + print("custom action indexPath: \(data.indexPath), item: \(data.item)") } + .action(.shouldHighlight) { _ in + + return false + } let sectionBuilder = TableSectionBuilder(headerTitle: "Tablet", footerTitle: "Deal with table view like a boss.", rowBuilders: [rowBuilder, configurableRowBuilder])