From 28a354873c660551a01a5382249d5d0d053b137c Mon Sep 17 00:00:00 2001 From: Max Sokolov Date: Sun, 6 Dec 2015 21:37:19 +0300 Subject: [PATCH] attempt to auto register cells --- Tablet/TableDirector.swift | 42 +++++++----------- Tablet/TableRowBuilder.swift | 22 ++++++--- Tablet/TableSectionBuilder.swift | 19 +++++++- Tablet/Tablet.swift | 1 + .../UserInterfaceState.xcuserstate | Bin 26803 -> 27517 bytes TabletDemo/TabletDemo/ViewController.swift | 2 +- 6 files changed, 50 insertions(+), 36 deletions(-) diff --git a/Tablet/TableDirector.swift b/Tablet/TableDirector.swift index 9856c1c..087e953 100644 --- a/Tablet/TableDirector.swift +++ b/Tablet/TableDirector.swift @@ -73,33 +73,6 @@ public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate builder.0.invokeAction(.custom(action.key), cell: action.cell, indexPath: indexPath, itemIndex: builder.1, userInfo: action.userInfo) } } - - func registerNibs() { - - let bundle = NSBundle(forClass: UITableViewCell.self) - - if let _ = bundle.pathForResource("cell name", ofType: "nib") { // existing cell - - tableView.registerNib(UINib(nibName: "cell", bundle: bundle), forCellReuseIdentifier: "cell id") - - } else { - - tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "") - } - } -} - -extension TableDirector { - - // MARK: Sections manipulation - - public func appendSection(section: TableSectionBuilder) { - sections.append(section) - } - - public func appendSections(sections: [TableSectionBuilder]) { - self.sections.appendContentsOf(sections) - } } public extension TableDirector { @@ -206,6 +179,21 @@ public extension TableDirector { } } +extension TableDirector { + + // MARK: Sections manipulation + + public func appendSection(section: TableSectionBuilder) { + appendSections([section]) + } + + public func appendSections(sections: [TableSectionBuilder]) { + + sections.forEach { $0.willMoveToDirector(tableView) } + self.sections.appendContentsOf(sections) + } +} + public func +=(left: TableDirector, right: RowBuilder) { left.appendSection(TableSectionBuilder(rowBuilders: [right])) diff --git a/Tablet/TableRowBuilder.swift b/Tablet/TableRowBuilder.swift index d980ac1..92649ea 100644 --- a/Tablet/TableRowBuilder.swift +++ b/Tablet/TableRowBuilder.swift @@ -102,6 +102,22 @@ public class TableRowBuilder : RowBuilder { } return nil } + + public func registerCell(inTableView tableView: UITableView) { + + guard let resource = NSStringFromClass(C).componentsSeparatedByString(".").last else { return } + + let bundle = NSBundle(forClass: C.self) + + if let _ = bundle.pathForResource(resource, ofType: "nib") { // existing cell + + tableView.registerNib(UINib(nibName: resource, bundle: bundle), forCellReuseIdentifier: reusableIdentifier) + + } else { + + tableView.registerClass(C.self, forCellReuseIdentifier: reusableIdentifier) + } + } } /** @@ -141,10 +157,4 @@ public extension TableRowBuilder { items.removeAll() } -} - -public func +=(var left: TableRowBuilder, right: T) -> TableRowBuilder { - - left.appendItems([right]) - return left } \ No newline at end of file diff --git a/Tablet/TableSectionBuilder.swift b/Tablet/TableSectionBuilder.swift index f74bdd3..2fcfd16 100644 --- a/Tablet/TableSectionBuilder.swift +++ b/Tablet/TableSectionBuilder.swift @@ -27,6 +27,7 @@ import Foundation */ public class TableSectionBuilder { + internal weak var tableView: UITableView? private var builders = [RowBuilder]() public var headerTitle: String? @@ -45,7 +46,7 @@ public class TableSectionBuilder { } public init(headerTitle: String? = nil, footerTitle: String? = nil, rowBuilders: [RowBuilder]? = nil) { - + self.headerTitle = headerTitle self.footerTitle = footerTitle @@ -62,6 +63,9 @@ public class TableSectionBuilder { self.footerView = footerView self.footerHeight = footerHeight } +} + +internal extension TableSectionBuilder { internal func builderAtIndex(var index: Int) -> (RowBuilder, Int)? { @@ -74,6 +78,11 @@ public class TableSectionBuilder { return nil } + + internal func willMoveToDirector(tableView: UITableView) { + self.tableView = tableView + self.builders.forEach { $0.registerCell(inTableView: tableView) } + } } public extension TableSectionBuilder { @@ -87,6 +96,12 @@ public extension TableSectionBuilder { public func appendRowBuilder(rowBuilder: RowBuilder) { - builders.append(rowBuilder) + appendRowBuilders([rowBuilder]) + } + + public func appendRowBuilders(rowBuilders: [RowBuilder]) { + + if let tableView = tableView { rowBuilders.forEach { $0.registerCell(inTableView: tableView) } } + builders.appendContentsOf(rowBuilders) } } \ No newline at end of file diff --git a/Tablet/Tablet.swift b/Tablet/Tablet.swift index 12158ed..8b2c35e 100644 --- a/Tablet/Tablet.swift +++ b/Tablet/Tablet.swift @@ -122,5 +122,6 @@ public protocol RowBuilder { var reusableIdentifier: String { get } var estimatedRowHeight: CGFloat { get } + func registerCell(inTableView tableView: UITableView) func invokeAction(actionType: ActionType, cell: UITableViewCell?, indexPath: NSIndexPath, itemIndex: Int, userInfo: [NSObject: AnyObject]?) -> 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 5dccf4a9bf4afea2185125d67cfd45f2d0683a85..5bee61d4c1de8716ca27598166e7306462280837 100644 GIT binary patch delta 14718 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 Z#&j8HdtnaA4OHu&9dG-7`@hSC{|7^iwrT(X diff --git a/TabletDemo/TabletDemo/ViewController.swift b/TabletDemo/TabletDemo/ViewController.swift index bb14c76..9d996c0 100644 --- a/TabletDemo/TabletDemo/ViewController.swift +++ b/TabletDemo/TabletDemo/ViewController.swift @@ -18,7 +18,7 @@ class ViewController: UIViewController { tableDirector = TableDirector(tableView: tableView) - var rowBuilder = TableRowBuilder(items: [1, 2, 3, 4], id: "cell") + let rowBuilder = TableRowBuilder(items: [1, 2, 3, 4], id: "cell") .action(.configure) { data in data.cell?.textLabel?.text = "\(data.item)"