Skip to content

Commit 95126e8

Browse files
committedAug 1, 2020
Make collapse delegate and datasource optional
This change was required due to reported amount of crashes causing by force unwrapped delegate Increase version number Update podspec file
1 parent dcf1830 commit 95126e8

File tree

4 files changed

+17
-10
lines changed

4 files changed

+17
-10
lines changed
 

‎CollapseTableView.podspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ s.ios.deployment_target = '10.0'
66
s.name = "CollapseTableView"
77
s.summary = "CollapseTableView enables to expand sections with cells inside."
88
s.requires_arc = true
9-
s.version = "1.0.2"
9+
s.version = "1.0.3"
1010
s.license = { :type => "MIT", :file => "LICENSE" }
1111
s.author = { "Serhii Kharauzov" => "serhii.kharauzov@gmail.com" }
1212
s.homepage = "https://github.com/Kharauzov/CollapseTableView"

‎CollapseTableView.xcodeproj/project.pbxproj

+4
Original file line numberDiff line numberDiff line change
@@ -477,10 +477,12 @@
477477
"@executable_path/Frameworks",
478478
"@loader_path/Frameworks",
479479
);
480+
MARKETING_VERSION = 1.0.3;
480481
PRODUCT_BUNDLE_IDENTIFIER = sk.CollapseTableView;
481482
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
482483
PROVISIONING_PROFILE_SPECIFIER = "";
483484
SKIP_INSTALL = YES;
485+
SUPPORTS_MACCATALYST = YES;
484486
SWIFT_VERSION = 5.0;
485487
TARGETED_DEVICE_FAMILY = "1,2";
486488
};
@@ -503,10 +505,12 @@
503505
"@executable_path/Frameworks",
504506
"@loader_path/Frameworks",
505507
);
508+
MARKETING_VERSION = 1.0.3;
506509
PRODUCT_BUNDLE_IDENTIFIER = sk.CollapseTableView;
507510
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
508511
PROVISIONING_PROFILE_SPECIFIER = "";
509512
SKIP_INSTALL = YES;
513+
SUPPORTS_MACCATALYST = YES;
510514
SWIFT_VERSION = 5.0;
511515
TARGETED_DEVICE_FAMILY = "1,2";
512516
};

‎CollapseTableView/Info.plist

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<key>CFBundlePackageType</key>
1616
<string>FMWK</string>
1717
<key>CFBundleShortVersionString</key>
18-
<string>1.0.2</string>
18+
<string>$(MARKETING_VERSION)</string>
1919
<key>CFBundleVersion</key>
2020
<string>$(CURRENT_PROJECT_VERSION)</string>
2121
</dict>

‎CollapseTableView/Source/CollapseTableView.swift

+11-8
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import UIKit
1010

1111
open class CollapseTableView: UITableView {
1212
///
13-
private weak var collapseDataSource: UITableViewDataSource!
13+
private weak var collapseDataSource: UITableViewDataSource?
1414
///
15-
private weak var collapseDelegate: UITableViewDelegate!
15+
private weak var collapseDelegate: UITableViewDelegate?
1616
/// Represents opened/closed states of tableView's sections.
1717
private(set) var sectionStates = [Bool]()
1818
/// Determines, if section's headerView can be clickable.
@@ -42,10 +42,10 @@ open class CollapseTableView: UITableView {
4242
}
4343

4444
override open func forwardingTarget(for aSelector: Selector!) -> Any? {
45-
if collapseDataSource.responds(to: aSelector) {
45+
if collapseDataSource?.responds(to: aSelector) ?? false {
4646
return collapseDataSource
4747
}
48-
if collapseDelegate.responds(to: aSelector) {
48+
if collapseDelegate?.responds(to: aSelector) ?? false {
4949
return collapseDelegate
5050
}
5151
return nil
@@ -125,6 +125,9 @@ open class CollapseTableView: UITableView {
125125
}
126126

127127
private func indexPathsForRowsInSectionAtIndex(_ sectionIndex: Int) -> [IndexPath]? {
128+
guard let collapseDataSource = collapseDataSource else {
129+
return nil
130+
}
128131
if sectionIndex >= sectionStates.count {
129132
return nil
130133
}
@@ -148,7 +151,7 @@ open class CollapseTableView: UITableView {
148151

149152
extension CollapseTableView: UITableViewDataSource {
150153
public func numberOfSections(in tableView: UITableView) -> Int {
151-
let numberOfSections = collapseDataSource.numberOfSections?(in: tableView) ?? 0
154+
let numberOfSections = collapseDataSource?.numberOfSections?(in: tableView) ?? 0
152155
while numberOfSections < sectionStates.count {
153156
sectionStates.removeAll()
154157
}
@@ -160,21 +163,21 @@ extension CollapseTableView: UITableViewDataSource {
160163

161164
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
162165
if sectionStates[section] {
163-
return collapseDataSource.tableView(tableView, numberOfRowsInSection: section)
166+
return collapseDataSource?.tableView(tableView, numberOfRowsInSection: section) ?? 0
164167
}
165168
return 0
166169
}
167170

168171
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
169-
return collapseDataSource.tableView(tableView, cellForRowAt: indexPath)
172+
return collapseDataSource?.tableView(tableView, cellForRowAt: indexPath) ?? UITableViewCell()
170173
}
171174
}
172175

173176
// MARK: UITableViewDelegate
174177

175178
extension CollapseTableView: UITableViewDelegate {
176179
public func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
177-
guard let view = collapseDelegate.tableView?(tableView, viewForHeaderInSection: section) else {
180+
guard let view = collapseDelegate?.tableView?(tableView, viewForHeaderInSection: section) else {
178181
return nil
179182
}
180183
if shouldHandleHeadersTap {

0 commit comments

Comments
 (0)
Please sign in to comment.