From 41306ade4f7224ab00a4b6c76d790bcb2673274e Mon Sep 17 00:00:00 2001 From: Simon Bilsky-Rollins Date: Mon, 23 Apr 2018 21:58:48 -0500 Subject: [PATCH 1/3] Make TableViewHeader's delegate a weak reference --- .../CollapsibleTableViewHeader.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CollapsibleTableSectionViewController/CollapsibleTableViewHeader.swift b/CollapsibleTableSectionViewController/CollapsibleTableViewHeader.swift index d102592..996a48c 100644 --- a/CollapsibleTableSectionViewController/CollapsibleTableViewHeader.swift +++ b/CollapsibleTableSectionViewController/CollapsibleTableViewHeader.swift @@ -8,13 +8,13 @@ import UIKit -protocol CollapsibleTableViewHeaderDelegate { +protocol CollapsibleTableViewHeaderDelegate: class { func toggleSection(_ section: Int) } open class CollapsibleTableViewHeader: UITableViewHeaderFooterView { - var delegate: CollapsibleTableViewHeaderDelegate? + weak var delegate: CollapsibleTableViewHeaderDelegate? var section: Int = 0 let titleLabel = UILabel() From 5fbf9e2ef36b5f54abb30ca15fd6c8c0074bb3dc Mon Sep 17 00:00:00 2001 From: Simon Bilsky-Rollins Date: Mon, 28 May 2018 17:30:47 -0500 Subject: [PATCH 2/3] expose tapHeader function to objc --- .../CollapsibleTableViewHeader.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CollapsibleTableSectionViewController/CollapsibleTableViewHeader.swift b/CollapsibleTableSectionViewController/CollapsibleTableViewHeader.swift index 996a48c..184ada1 100644 --- a/CollapsibleTableSectionViewController/CollapsibleTableViewHeader.swift +++ b/CollapsibleTableSectionViewController/CollapsibleTableViewHeader.swift @@ -59,7 +59,7 @@ open class CollapsibleTableViewHeader: UITableViewHeaderFooterView { // // Trigger toggle section when tapping on the header // - func tapHeader(_ gestureRecognizer: UITapGestureRecognizer) { + @objc func tapHeader(_ gestureRecognizer: UITapGestureRecognizer) { guard let cell = gestureRecognizer.view as? CollapsibleTableViewHeader else { return } From b8a335a549d625c2a9366ef6fdeb624fcaefe536 Mon Sep 17 00:00:00 2001 From: Simon Bilsky-Rollins Date: Wed, 19 Sep 2018 09:49:00 -0400 Subject: [PATCH 3/3] upgrade to swift 4.2 --- .../project.pbxproj | 35 +++++++++++++++---- .../xcshareddata/IDEWorkspaceChecks.plist | 8 +++++ ...apsibleTableSectionViewController.xcscheme | 6 ++-- ...ollapsibleTableSectionViewController.swift | 6 ++-- .../CollapsibleTableViewHeader.swift | 2 +- ...sibleTableSectionViewControllerTests.swift | 4 +-- 6 files changed, 46 insertions(+), 15 deletions(-) create mode 100644 CollapsibleTableSectionViewController.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/CollapsibleTableSectionViewController.xcodeproj/project.pbxproj b/CollapsibleTableSectionViewController.xcodeproj/project.pbxproj index 7e70882..39bf376 100644 --- a/CollapsibleTableSectionViewController.xcodeproj/project.pbxproj +++ b/CollapsibleTableSectionViewController.xcodeproj/project.pbxproj @@ -149,16 +149,17 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 0830; + LastUpgradeCheck = 1000; ORGANIZATIONNAME = jeantimex; TargetAttributes = { 0A8BD66B1F231B2C003D6155 = { CreatedOnToolsVersion = 8.3.3; - LastSwiftMigration = 0830; + LastSwiftMigration = 1000; ProvisioningStyle = Automatic; }; 0A8BD6741F231B2C003D6155 = { CreatedOnToolsVersion = 8.3.3; + LastSwiftMigration = 1000; ProvisioningStyle = Automatic; }; }; @@ -237,15 +238,23 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -275,6 +284,7 @@ SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -291,15 +301,23 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -321,6 +339,7 @@ MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -345,7 +364,8 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -365,7 +385,8 @@ PRODUCT_BUNDLE_IDENTIFIER = jeantimex.com.CollapsibleTableSectionViewController; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.2; }; name = Release; }; @@ -377,7 +398,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = jeantimex.com.CollapsibleTableSectionViewControllerTests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -389,7 +411,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = jeantimex.com.CollapsibleTableSectionViewControllerTests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.2; }; name = Release; }; diff --git a/CollapsibleTableSectionViewController.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/CollapsibleTableSectionViewController.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/CollapsibleTableSectionViewController.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/CollapsibleTableSectionViewController.xcodeproj/xcshareddata/xcschemes/CollapsibleTableSectionViewController.xcscheme b/CollapsibleTableSectionViewController.xcodeproj/xcshareddata/xcschemes/CollapsibleTableSectionViewController.xcscheme index c7073fe..c182363 100644 --- a/CollapsibleTableSectionViewController.xcodeproj/xcshareddata/xcschemes/CollapsibleTableSectionViewController.xcscheme +++ b/CollapsibleTableSectionViewController.xcodeproj/xcshareddata/xcschemes/CollapsibleTableSectionViewController.xcscheme @@ -1,6 +1,6 @@ + codeCoverageEnabled = "YES" + shouldUseLaunchSchemeArgsEnv = "YES"> diff --git a/CollapsibleTableSectionViewController/CollapsibleTableSectionViewController.swift b/CollapsibleTableSectionViewController/CollapsibleTableSectionViewController.swift index a4b4ed6..af29329 100644 --- a/CollapsibleTableSectionViewController/CollapsibleTableSectionViewController.swift +++ b/CollapsibleTableSectionViewController/CollapsibleTableSectionViewController.swift @@ -76,7 +76,7 @@ open class CollapsibleTableSectionViewController: UIViewController { // Auto resizing the height of the cell _tableView.estimatedRowHeight = 44.0 - _tableView.rowHeight = UITableViewAutomaticDimension + _tableView.rowHeight = UITableView.automaticDimension // Auto layout the tableView view.addSubview(_tableView) @@ -105,11 +105,11 @@ extension CollapsibleTableSectionViewController: UITableViewDataSource, UITableV // Cell public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - return delegate?.collapsibleTableView?(tableView, cellForRowAt: indexPath) ?? UITableViewCell.init(style: UITableViewCellStyle.default, reuseIdentifier: "DefaultCell") + return delegate?.collapsibleTableView?(tableView, cellForRowAt: indexPath) ?? UITableViewCell.init(style: UITableViewCell.CellStyle.default, reuseIdentifier: "DefaultCell") } public func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { - return UITableViewAutomaticDimension + return UITableView.automaticDimension } public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { diff --git a/CollapsibleTableSectionViewController/CollapsibleTableViewHeader.swift b/CollapsibleTableSectionViewController/CollapsibleTableViewHeader.swift index 184ada1..2cbc9df 100644 --- a/CollapsibleTableSectionViewController/CollapsibleTableViewHeader.swift +++ b/CollapsibleTableSectionViewController/CollapsibleTableViewHeader.swift @@ -97,7 +97,7 @@ extension UIView { animation.toValue = toValue animation.duration = duration animation.isRemovedOnCompletion = false - animation.fillMode = kCAFillModeForwards + animation.fillMode = CAMediaTimingFillMode.forwards self.layer.add(animation, forKey: nil) } diff --git a/CollapsibleTableSectionViewControllerTests/CollapsibleTableSectionViewControllerTests.swift b/CollapsibleTableSectionViewControllerTests/CollapsibleTableSectionViewControllerTests.swift index 26eee3c..5e955d0 100644 --- a/CollapsibleTableSectionViewControllerTests/CollapsibleTableSectionViewControllerTests.swift +++ b/CollapsibleTableSectionViewControllerTests/CollapsibleTableSectionViewControllerTests.swift @@ -124,7 +124,7 @@ class CollapsibleTableSectionViewControllerTests: XCTestCase { // Mock the CollapsibleTableSectionDelegate class MockDelegate: CollapsibleTableSectionDelegate { func collapsibleTableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - return UITableViewCell.init(style: UITableViewCellStyle.subtitle, reuseIdentifier: "CustomCell") + return UITableViewCell.init(style: UITableViewCell.CellStyle.subtitle, reuseIdentifier: "CustomCell") } } @@ -153,7 +153,7 @@ class CollapsibleTableSectionViewControllerTests: XCTestCase { func testReturnsUITableViewAutomaticDimension() { let heightForRowAt = viewController.tableView(tableView, heightForRowAt: IndexPath(row: 0, section: 0)) - XCTAssertEqual(heightForRowAt, UITableViewAutomaticDimension) + XCTAssertEqual(heightForRowAt, UITableView.automaticDimension) } //