From c8333322cc283902bd2033b6e7c67233b5cd3274 Mon Sep 17 00:00:00 2001 From: Max Sokolov Date: Sun, 15 Nov 2015 13:44:05 +0300 Subject: [PATCH] implemented estimatedRowHeight --- Tablet/TableDirector.swift | 24 +++++++++--------- Tablet/TableRowBuilder.swift | 10 ++++---- Tablet/Tablet.swift | 2 +- .../TabletDemo.xcodeproj/project.pbxproj | 7 +++++ .../UserInterfaceState.xcuserstate | Bin 24923 -> 26363 bytes TabletDemo/TabletDemo/ViewController.swift | 11 +++----- 6 files changed, 28 insertions(+), 26 deletions(-) diff --git a/Tablet/TableDirector.swift b/Tablet/TableDirector.swift index 8f2f74e..b8bb781 100644 --- a/Tablet/TableDirector.swift +++ b/Tablet/TableDirector.swift @@ -146,8 +146,19 @@ extension TableDirector { } extension TableDirector { - + // MARK: UITableViewDelegate - actions + + public func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { + + return builderAtIndexPath(indexPath).0.estimatedRowHeight + } + + public func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { + + + return triggerAction(.height, cell: nil, indexPath: indexPath) as? CGFloat ?? UITableViewAutomaticDimension + } public func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { @@ -174,15 +185,4 @@ extension TableDirector { return triggerAction(.shouldHighlight, cell: tableView.cellForRowAtIndexPath(indexPath), indexPath: indexPath) as? Bool ?? true } - - public func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { - - return 300 - } - - public func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { - - print(indexPath) - return triggerAction(.height, cell: nil, indexPath: indexPath) as? CGFloat ?? UITableViewAutomaticDimension - } } \ No newline at end of file diff --git a/Tablet/TableRowBuilder.swift b/Tablet/TableRowBuilder.swift index c3cf2fd..a09de24 100644 --- a/Tablet/TableRowBuilder.swift +++ b/Tablet/TableRowBuilder.swift @@ -49,21 +49,21 @@ public class TableRowBuilder : RowBuilder { private var items = [I]() public var reusableIdentifier: String - public var estimatedRowHeight: Float + public var estimatedRowHeight: CGFloat public var numberOfRows: Int { get { return items.count } } - public init(item: I, id: String, estimatedRowHeight: Float = 0) { + public init(item: I, id: String, estimatedRowHeight: CGFloat = UITableViewAutomaticDimension) { reusableIdentifier = id self.estimatedRowHeight = estimatedRowHeight items.append(item) } - public init(items: [I]? = nil, id: String, estimatedRowHeight: Float = 0) { + public init(items: [I]? = nil, id: String, estimatedRowHeight: CGFloat = UITableViewAutomaticDimension) { reusableIdentifier = id self.estimatedRowHeight = estimatedRowHeight @@ -121,11 +121,11 @@ public class TableRowBuilder : RowBuilder { */ public class TableConfigurableRowBuilder : TableRowBuilder { - public init(item: I, estimatedRowHeight: Float = 0) { + public init(item: I, estimatedRowHeight: CGFloat = UITableViewAutomaticDimension) { super.init(item: item, id: C.reusableIdentifier(), estimatedRowHeight: estimatedRowHeight) } - public init(items: [I]? = nil, estimatedRowHeight: Float = 0) { + public init(items: [I]? = nil, estimatedRowHeight: CGFloat = UITableViewAutomaticDimension) { super.init(items: items, id: C.reusableIdentifier(), estimatedRowHeight: estimatedRowHeight) } diff --git a/Tablet/Tablet.swift b/Tablet/Tablet.swift index 64cfafa..6ceeeaf 100644 --- a/Tablet/Tablet.swift +++ b/Tablet/Tablet.swift @@ -112,7 +112,7 @@ public protocol RowBuilder { var numberOfRows: Int { get } var reusableIdentifier: String { get } - var estimatedRowHeight: Float { get } + var estimatedRowHeight: CGFloat { get } func triggerAction(actionType: ActionType, cell: UITableViewCell?, indexPath: NSIndexPath, itemIndex: Int) -> AnyObject? } \ No newline at end of file diff --git a/TabletDemo/TabletDemo.xcodeproj/project.pbxproj b/TabletDemo/TabletDemo.xcodeproj/project.pbxproj index 3a5cbf8..f241c66 100644 --- a/TabletDemo/TabletDemo.xcodeproj/project.pbxproj +++ b/TabletDemo/TabletDemo.xcodeproj/project.pbxproj @@ -122,6 +122,7 @@ TargetAttributes = { DAB7EB261BEF787300D2AD5E = { CreatedOnToolsVersion = 7.0.1; + DevelopmentTeam = Z48R734SJX; }; }; }; @@ -279,11 +280,14 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; INFOPLIST_FILE = TabletDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.tablet.TabletDemo; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; }; name = Debug; }; @@ -291,11 +295,14 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; INFOPLIST_FILE = TabletDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.tablet.TabletDemo; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; }; name = Release; }; 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 6c57e1d730bc92263b02d50902a776224ae6f460..61803cb7d4ddd5ef8ce9bdf7b59a32f84095fc17 100644 GIT binary patch delta 14504 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 Void in - + data.cell!.contentLabel.text = "With iOS 8, Apple has internalized much of the work that previously had to be implemented by you prior to iOS 8. In order to allow the self-sizing cell mechanism to work, you must first set the rowHeight property on the table view to the constant UITableViewAutomaticDimension. Then, you simply need to enable row height estimation by setting the table view's estimatedRowHeight property to a nonzero value, for example" - - //data.cell!.setNeedsUpdateConstraints() - //data.cell!.updateConstraintsIfNeeded() } - let sectionBuilder = TableSectionBuilder(headerTitle: "Tablet", footerTitle: "Deal with table view like a boss.", rowBuilders: [configurableRowBuilder]) + let sectionBuilder = TableSectionBuilder(headerTitle: "Tablet", footerTitle: "Deal with table view like a boss.", rowBuilders: [rowBuilder, configurableRowBuilder]) tableDirector.appendSection(sectionBuilder) } -} - -// вход со стороны кутузовского проспекта между домами 10 14 левее чайхоны, на охране сказать кодовое слово Магия - найти клуб лабиринт \ No newline at end of file +} \ No newline at end of file