From f240fee2a09c7fe01d68ba95a18af9b9e1688998 Mon Sep 17 00:00:00 2001 From: Ali Can Batur Date: Fri, 15 Dec 2017 13:32:30 +0300 Subject: [PATCH] Created models, cell, headerView. --- .gitignore | 59 +++++++--- ABExpandableView/Classes/Models/RowItem.swift | 13 +++ .../Classes/Models/SectionItem.swift | 46 ++++++++ ABExpandableView/Classes/ReplaceMe.swift | 0 .../Resources/Assets.xcassets/Contents.json | 6 ++ .../arrow_down.imageset/Contents.json | 23 ++++ .../arrow_down.imageset/arrowDown.png | Bin 0 -> 482 bytes .../arrow_down.imageset/arrowDown@2x.png | Bin 0 -> 571 bytes .../arrow_down.imageset/arrowDown@3x.png | Bin 0 -> 733 bytes .../Classes/View/Cells/SelectionCell.swift | 24 +++++ .../Classes/View/Expandable.storyboard | 80 ++++++++++++++ .../ExpandableSectionsViewController.swift | 18 ++++ .../HeaderView/ExpandableHeaderView.swift | 12 +++ .../View/HeaderView/ExpandableHeaderView.xib | 86 +++++++++++++++ Example/Pods/Pods.xcodeproj/project.pbxproj | 101 +++++++++++++++--- 15 files changed, 440 insertions(+), 28 deletions(-) create mode 100644 ABExpandableView/Classes/Models/RowItem.swift create mode 100644 ABExpandableView/Classes/Models/SectionItem.swift delete mode 100644 ABExpandableView/Classes/ReplaceMe.swift create mode 100644 ABExpandableView/Classes/Resources/Assets.xcassets/Contents.json create mode 100644 ABExpandableView/Classes/Resources/Assets.xcassets/arrow_down.imageset/Contents.json create mode 100644 ABExpandableView/Classes/Resources/Assets.xcassets/arrow_down.imageset/arrowDown.png create mode 100644 ABExpandableView/Classes/Resources/Assets.xcassets/arrow_down.imageset/arrowDown@2x.png create mode 100644 ABExpandableView/Classes/Resources/Assets.xcassets/arrow_down.imageset/arrowDown@3x.png create mode 100644 ABExpandableView/Classes/View/Cells/SelectionCell.swift create mode 100644 ABExpandableView/Classes/View/Expandable.storyboard create mode 100644 ABExpandableView/Classes/View/ExpandableSectionsViewController.swift create mode 100644 ABExpandableView/Classes/View/HeaderView/ExpandableHeaderView.swift create mode 100644 ABExpandableView/Classes/View/HeaderView/ExpandableHeaderView.xib diff --git a/.gitignore b/.gitignore index e7b722d..e08ba7e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,16 @@ -# OS X -.DS_Store +# Created by https://www.gitignore.io/api/swift + +### Swift ### # Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## Build generated build/ +DerivedData/ + +## Various settings *.pbxuser !default.pbxuser *.mode1v3 @@ -12,22 +20,43 @@ build/ *.perspectivev3 !default.perspectivev3 xcuserdata/ -*.xccheckout -profile + +## Other *.moved-aside -DerivedData +*.xccheckout +*.xcscmblueprint + +## Obj-C/Swift specific *.hmap *.ipa +*.dSYM.zip +*.dSYM -# Bundler -.bundle +## Playgrounds +timeline.xctimeline +playground.xcworkspace -Carthage -# We recommend against adding the Pods directory to your .gitignore. However -# you should judge for yourself, the pros and cons are mentioned at: -# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control -# -# Note: if you ignore the Pods directory, make sure to uncomment -# `pod install` in .travis.yml +# Swift Package Manager # -# Pods/ +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +.build/ + +# CocoaPods - Refactored to standalone file + +# Carthage - Refactored to standalone file + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +# fastlane/report.xml +# fastlane/Preview.html +# fastlane/screenshots +# fastlane/test_output + +# End of https://www.gitignore.io/api/swift \ No newline at end of file diff --git a/ABExpandableView/Classes/Models/RowItem.swift b/ABExpandableView/Classes/Models/RowItem.swift new file mode 100644 index 0000000..59dad5b --- /dev/null +++ b/ABExpandableView/Classes/Models/RowItem.swift @@ -0,0 +1,13 @@ +// +// RowItem.swift +// ABExpandableView +// +// Created by Ali Can Batur on 15/12/2017. +// + +import Foundation + +protocol RowItem { + var identifier: String! { get } + var name: String! { get } +} diff --git a/ABExpandableView/Classes/Models/SectionItem.swift b/ABExpandableView/Classes/Models/SectionItem.swift new file mode 100644 index 0000000..0850535 --- /dev/null +++ b/ABExpandableView/Classes/Models/SectionItem.swift @@ -0,0 +1,46 @@ +// +// SectionItem.swift +// ABExpandableView +// +// Created by Ali Can Batur on 15/12/2017. +// + +import Foundation + +protocol SectionItem: RowItem { + var expanded: Bool { get set } + var rows: [RowItem] { get set } + var rawRows: [RowItem] { get set } + var selectedRows: [RowItem] { get set } + var numberOfSelectedItems: Int { get } +} + +/* + SectionItem extension manages the selection of objects using id comparison. +*/ + +extension SectionItem { + + mutating func select(row: RowItem) { + if !selectedRows.contains(where: { $0.identifier == row.identifier }) { + selectedRows.append(row) + } + } + + mutating func deselect(row: RowItem) { + selectedRows = selectedRows.filter({ $0.identifier != row.identifier }) + } + + func isSelected(row: RowItem) -> Bool { + return selectedRows.contains(where: { $0.identifier == row.identifier }) + } + + mutating func filterRows(inputText: String) -> [RowItem] { + rows = rawRows.filter({( item: RowItem) -> Bool in + if inputText == "" { return true } + return item.name.lowercased().range(of: inputText.lowercased()) != nil + }) + return rows + } + +} diff --git a/ABExpandableView/Classes/ReplaceMe.swift b/ABExpandableView/Classes/ReplaceMe.swift deleted file mode 100644 index e69de29..0000000 diff --git a/ABExpandableView/Classes/Resources/Assets.xcassets/Contents.json b/ABExpandableView/Classes/Resources/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/ABExpandableView/Classes/Resources/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ABExpandableView/Classes/Resources/Assets.xcassets/arrow_down.imageset/Contents.json b/ABExpandableView/Classes/Resources/Assets.xcassets/arrow_down.imageset/Contents.json new file mode 100644 index 0000000..6f5a828 --- /dev/null +++ b/ABExpandableView/Classes/Resources/Assets.xcassets/arrow_down.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "arrowDown.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "arrowDown@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "arrowDown@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ABExpandableView/Classes/Resources/Assets.xcassets/arrow_down.imageset/arrowDown.png b/ABExpandableView/Classes/Resources/Assets.xcassets/arrow_down.imageset/arrowDown.png new file mode 100644 index 0000000000000000000000000000000000000000..a5659e13aac7fd37b2be4d7a938c06ba95fb9046 GIT binary patch literal 482 zcmV<80UiE{P)yGq1B6oxmGKsq6Ut60l+f~6KBVqv?TU?GGgzQMkL*oc*# zA(ujHK@dR;N#P4vst=&7g{kbaiT?>ZlFcS@#*GIiXXa$)|K@Ts>2zROmNC!s7ODPU z7DbU3hT#I&SA5@JNz?Qe@SdV5kBqUtZQGx`LmM88T8I7>$};q>4a3-DfSwVQ0Pve= zKVUNRZ2(Cl2!ai0-jAUa>c??>$PnmKiyPW&ZNUkeB*`7L=eYjZcbTfHN7&*~@kJZ( z2I#w{Y3B^*c>~Zvn{YbQnw1iC+p?@Tg|F0g-F?6>FbS2%$RqZIgxe8KID*odVrY4L zIrJshr3bfJ;i6FD{j7LaxD2!sOhMU|%R+0xGVs4Z8^I!QBw|k_kw~j-Q)gW6(6H^V z0573`WA>Kyc>7l{b*zJPk%FK2WD4=Ast}k)3BZM+q$dpKaQI6UM(u(PaU*TvM#?XT zLcF#r1tt|_@c?Igf|8GgPjp>hHBIxmmQwMeJoAb!lOe}(PH~MMBl?B%fuGE-ER+<# Y0Z!l>|I=8(*#H0l07*qoM6N<$f}=6o{Qv*} literal 0 HcmV?d00001 diff --git a/ABExpandableView/Classes/Resources/Assets.xcassets/arrow_down.imageset/arrowDown@2x.png b/ABExpandableView/Classes/Resources/Assets.xcassets/arrow_down.imageset/arrowDown@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..41698863d1478fd3c27ab692907ed2e3e0fc998f GIT binary patch literal 571 zcmV-B0>u4^P)orfKd0yl-C@lW8F~>h-!w=mQjX>_$7sNpCocdBA^zZ4>goq9~Ixf}*R^ z3GsD|<7i`mDW@`nAOK8PR|bQ@JfUCwELp=tz#}G1&oXX-Ba}Y#hDQOz*v9R8CF91v z!=hWy6CM$KQz#VHXhDvC@@SUPaT%-i453P8uaw5(i~(LMl}aDva?n)B8Xg6ViMrKw zebEO0L1zh13id>20T%)LqSJ(nf&Kit=U%Log1T2K6&Pm{+ zU}1DzI0u*o9Tm<6W<%3J*zT`j|8|bhYjHo~1%BH7dP#kfCfXyiq-wQ#fgR8;W|X%2 zPC~h>Y1#}Im+Y=$xg63?)c|QxGd;?b5Au z3UnYQCe1GD})1J@s-S3^RW5hSMhVso^F85pDYy5HwmijIAdcBikvG`(g5SxxwSc((A zN7xl9FR;C)j3QZ$o`v;XnB^_}wvz&xq*tieTZs;eB^PGdX}8;}0-5g$s9a?gdLHZ$ zaf1umFM&(5@iu{&E*m}KAF>VHk&uikoLBb68sbB=A1Dnwt*nhybqPeiXVB64~ z*r{M!(A-!hc+qGR*qPu(p-o`}fuly7#0CaOg*J_y3v3!41$J(*DRfj=EigAaN~|`R z3mr8!6gVt;5!ldRT{PC<=}xEf7X7tXJ#=oJG`3pO8G!m|tg?FOM$glNrm-bn&`y5s zSim%}2HGzkzcMx~4bBFp!3>~TvFu=GG&|M^m7t@ts4CX0^t4FuGHwSi<&IGAdp;n);<@pLX)MJz&&_|DXJ$Dt$H44k zqdy#D31wGNVd=!apZHirj0fd%dA-$Y(W{-uc&GIjLm%Sx#|Oq!%pB?tO}-_rT)FAm P00000NkvXXu0mjfh>cgw literal 0 HcmV?d00001 diff --git a/ABExpandableView/Classes/View/Cells/SelectionCell.swift b/ABExpandableView/Classes/View/Cells/SelectionCell.swift new file mode 100644 index 0000000..200ac9b --- /dev/null +++ b/ABExpandableView/Classes/View/Cells/SelectionCell.swift @@ -0,0 +1,24 @@ +// +// SelectionCell.swift +// ABExpandableView +// +// Created by Ali Can Batur on 15/12/2017. +// + +import Foundation + +class SelectionCell: UITableViewCell { + + // MARK: - Reuse identifier + + class var reuseIdentifier: String { + return String(describing: self) + } + + // MARK: - Public helper + + func populateCell(_ text: String) { + textLabel?.text = text + } + +} diff --git a/ABExpandableView/Classes/View/Expandable.storyboard b/ABExpandableView/Classes/View/Expandable.storyboard new file mode 100644 index 0000000..86f3db2 --- /dev/null +++ b/ABExpandableView/Classes/View/Expandable.storyboard @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ABExpandableView/Classes/View/ExpandableSectionsViewController.swift b/ABExpandableView/Classes/View/ExpandableSectionsViewController.swift new file mode 100644 index 0000000..ade4865 --- /dev/null +++ b/ABExpandableView/Classes/View/ExpandableSectionsViewController.swift @@ -0,0 +1,18 @@ +// +// ExpandableSectionsViewController.swift +// ABExpandableView +// +// Created by Ali Can Batur on 14/12/2017. +// + +import UIKit + +class ExpandableSectionsViewController: UIViewController { + + // MARK: - View Lifecycle + + override func viewDidLoad() { + super.viewDidLoad() + } + +} diff --git a/ABExpandableView/Classes/View/HeaderView/ExpandableHeaderView.swift b/ABExpandableView/Classes/View/HeaderView/ExpandableHeaderView.swift new file mode 100644 index 0000000..f1a1b12 --- /dev/null +++ b/ABExpandableView/Classes/View/HeaderView/ExpandableHeaderView.swift @@ -0,0 +1,12 @@ +// +// ExpandableHeaderView.swift +// ABExpandableView +// +// Created by Ali Can Batur on 15/12/2017. +// + +import Foundation + +class ExpandableHeaderView: UITableViewHeaderFooterView { + +} diff --git a/ABExpandableView/Classes/View/HeaderView/ExpandableHeaderView.xib b/ABExpandableView/Classes/View/HeaderView/ExpandableHeaderView.xib new file mode 100644 index 0000000..9d95564 --- /dev/null +++ b/ABExpandableView/Classes/View/HeaderView/ExpandableHeaderView.xib @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index ce73381..a558ae0 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -14,8 +14,12 @@ 819EA0903FF9F7FFDEFD1D34742599AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */; }; 81AD7D2035EEDA53DE74F8558E8D3764 /* Pods-ABExpandableView_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 36086E2A3BEE60135CCA23800AF6E23F /* Pods-ABExpandableView_Example-dummy.m */; }; 9AFE487F18B6D0716802C8D8C0AC76C8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */; }; + CF3102BD1FE3DBB500658587 /* SelectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3102B91FE3DBB500658587 /* SelectionCell.swift */; }; + CF3102BE1FE3DBB500658587 /* ExpandableHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3102BB1FE3DBB500658587 /* ExpandableHeaderView.swift */; }; + CF3102C41FE3DBE700658587 /* RowItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3102C01FE3DBE700658587 /* RowItem.swift */; }; + CF3102C51FE3DBE700658587 /* SectionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3102C11FE3DBE700658587 /* SectionItem.swift */; }; + CFC1CB2B1FE31C6700FF9F3E /* ExpandableSectionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC1CB2A1FE31C6700FF9F3E /* ExpandableSectionsViewController.swift */; }; D3615B444E5F4011FBB055722D41BE0B /* Pods-ABExpandableView_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A352218EF4CB21E6026FD3BA01DBDE7 /* Pods-ABExpandableView_Tests-dummy.m */; }; - DC75373E4C56C93FE46F5F24093754CB /* ReplaceMe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35C602D9F938DE514DC21585F3A2AA87 /* ReplaceMe.swift */; }; FE947B27766BF250350A221693DED20D /* ABExpandableView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C8F9349582D1E73F6AE0FC97E8DBC39E /* ABExpandableView-dummy.m */; }; /* End PBXBuildFile section */ @@ -34,34 +38,41 @@ 141B9A30F02335E77D9C3288A3B25E43 /* Pods-ABExpandableView_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ABExpandableView_Example-acknowledgements.plist"; sourceTree = ""; }; 15BEB936AB665B0FCA914EA41B13A3D9 /* Pods-ABExpandableView_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ABExpandableView_Tests.release.xcconfig"; sourceTree = ""; }; 1B226D508F6602D08F55AA40586A7BDA /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 29454722539946976852A6EFF28776E9 /* ABExpandableView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = ABExpandableView.modulemap; sourceTree = ""; }; + 29454722539946976852A6EFF28776E9 /* ABExpandableView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = ABExpandableView.modulemap; sourceTree = ""; }; 339ED3F1639D53817890C919169B9043 /* Pods-ABExpandableView_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ABExpandableView_Example-resources.sh"; sourceTree = ""; }; - 35C602D9F938DE514DC21585F3A2AA87 /* ReplaceMe.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ReplaceMe.swift; sourceTree = ""; }; 36086E2A3BEE60135CCA23800AF6E23F /* Pods-ABExpandableView_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ABExpandableView_Example-dummy.m"; sourceTree = ""; }; 3ABA2A4733CB0D1A468163134A4E2580 /* Pods-ABExpandableView_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ABExpandableView_Example.release.xcconfig"; sourceTree = ""; }; - 3AD5B0B0C7863461258E830458077048 /* ABExpandableView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ABExpandableView.framework; path = ABExpandableView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3AD5B0B0C7863461258E830458077048 /* ABExpandableView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ABExpandableView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3AFCF7161FE3461392FB26BC92E6145A /* Pods-ABExpandableView_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ABExpandableView_Tests-acknowledgements.markdown"; sourceTree = ""; }; 53981AAD23C6FEA27F605029C280344A /* Pods-ABExpandableView_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ABExpandableView_Tests-umbrella.h"; sourceTree = ""; }; 62AA0E3C693A490D88943735B5A7C9B8 /* Pods-ABExpandableView_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ABExpandableView_Example.debug.xcconfig"; sourceTree = ""; }; 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 66E50BE944CDA530A7F563A0219ACE83 /* ABExpandableView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ABExpandableView-prefix.pch"; sourceTree = ""; }; 7A352218EF4CB21E6026FD3BA01DBDE7 /* Pods-ABExpandableView_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ABExpandableView_Tests-dummy.m"; sourceTree = ""; }; - 8142B8CA96D6AB4C1E6CFD2759A015E1 /* Pods-ABExpandableView_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-ABExpandableView_Tests.modulemap"; sourceTree = ""; }; + 8142B8CA96D6AB4C1E6CFD2759A015E1 /* Pods-ABExpandableView_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-ABExpandableView_Tests.modulemap"; sourceTree = ""; }; 8C7051CEF889F1CB50D76E297ABCCBE7 /* Pods-ABExpandableView_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ABExpandableView_Example-umbrella.h"; sourceTree = ""; }; - 8DF2D475E1880772F390984CFD1E02F4 /* Pods_ABExpandableView_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_ABExpandableView_Example.framework; path = "Pods-ABExpandableView_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 8DF2D475E1880772F390984CFD1E02F4 /* Pods_ABExpandableView_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ABExpandableView_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 8E73B28B4F4D680E46711ADD64EB3DB5 /* Pods-ABExpandableView_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ABExpandableView_Tests-acknowledgements.plist"; sourceTree = ""; }; 917D4F1BCE3724C7F203EBBEC908C878 /* Pods-ABExpandableView_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ABExpandableView_Example-acknowledgements.markdown"; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9795F6C9D824E2ACD8E6587F3BF26B9B /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 9A618B1705B3DD0B6E3B7421651D05D0 /* ABExpandableView.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ABExpandableView.xcconfig; sourceTree = ""; }; - 9AF4DDA23DF6BB793D0F82FEEF1204F9 /* Pods_ABExpandableView_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_ABExpandableView_Tests.framework; path = "Pods-ABExpandableView_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 9AF4DDA23DF6BB793D0F82FEEF1204F9 /* Pods_ABExpandableView_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ABExpandableView_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A6221FBA09E43E1545423A5A7A561515 /* Pods-ABExpandableView_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ABExpandableView_Example-frameworks.sh"; sourceTree = ""; }; B853C15AFDDC3807B27AD9E14D603E62 /* Pods-ABExpandableView_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ABExpandableView_Tests.debug.xcconfig"; sourceTree = ""; }; C8F9349582D1E73F6AE0FC97E8DBC39E /* ABExpandableView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ABExpandableView-dummy.m"; sourceTree = ""; }; + CF3102B91FE3DBB500658587 /* SelectionCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelectionCell.swift; sourceTree = ""; }; + CF3102BB1FE3DBB500658587 /* ExpandableHeaderView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExpandableHeaderView.swift; sourceTree = ""; }; + CF3102BC1FE3DBB500658587 /* ExpandableHeaderView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ExpandableHeaderView.xib; sourceTree = ""; }; + CF3102C01FE3DBE700658587 /* RowItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RowItem.swift; sourceTree = ""; }; + CF3102C11FE3DBE700658587 /* SectionItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SectionItem.swift; sourceTree = ""; }; + CF3102C31FE3DBE700658587 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + CFC1CB291FE31C6700FF9F3E /* Expandable.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Expandable.storyboard; sourceTree = ""; }; + CFC1CB2A1FE31C6700FF9F3E /* ExpandableSectionsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExpandableSectionsViewController.swift; sourceTree = ""; }; D564176A3D796F51DD1DFC25AEF7FB67 /* Pods-ABExpandableView_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ABExpandableView_Tests-resources.sh"; sourceTree = ""; }; D70D7C3ED85A8BECBE3C32E48202FEAD /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; DF3A1B173D54A13BF0172BA4C4877F2A /* Pods-ABExpandableView_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ABExpandableView_Tests-frameworks.sh"; sourceTree = ""; }; - FAAB219C584CFE6471D173996B124B7B /* Pods-ABExpandableView_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-ABExpandableView_Example.modulemap"; sourceTree = ""; }; + FAAB219C584CFE6471D173996B124B7B /* Pods-ABExpandableView_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-ABExpandableView_Example.modulemap"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -198,6 +209,58 @@ path = "Target Support Files/Pods-ABExpandableView_Example"; sourceTree = ""; }; + CF3102B81FE3DBB500658587 /* Cells */ = { + isa = PBXGroup; + children = ( + CF3102B91FE3DBB500658587 /* SelectionCell.swift */, + ); + path = Cells; + sourceTree = ""; + }; + CF3102BA1FE3DBB500658587 /* HeaderView */ = { + isa = PBXGroup; + children = ( + CF3102BC1FE3DBB500658587 /* ExpandableHeaderView.xib */, + CF3102BB1FE3DBB500658587 /* ExpandableHeaderView.swift */, + ); + path = HeaderView; + sourceTree = ""; + }; + CF3102BF1FE3DBE700658587 /* Models */ = { + isa = PBXGroup; + children = ( + CF3102C01FE3DBE700658587 /* RowItem.swift */, + CF3102C11FE3DBE700658587 /* SectionItem.swift */, + ); + path = Models; + sourceTree = ""; + }; + CF3102C21FE3DBE700658587 /* Resources */ = { + isa = PBXGroup; + children = ( + CF3102C31FE3DBE700658587 /* Assets.xcassets */, + ); + path = Resources; + sourceTree = ""; + }; + CF3102C61FE3DBEF00658587 /* ViewModel */ = { + isa = PBXGroup; + children = ( + ); + path = ViewModel; + sourceTree = ""; + }; + CFC1CB251FE31C4800FF9F3E /* View */ = { + isa = PBXGroup; + children = ( + CFC1CB291FE31C6700FF9F3E /* Expandable.storyboard */, + CFC1CB2A1FE31C6700FF9F3E /* ExpandableSectionsViewController.swift */, + CF3102B81FE3DBB500658587 /* Cells */, + CF3102BA1FE3DBB500658587 /* HeaderView */, + ); + path = View; + sourceTree = ""; + }; D35AF013A5F0BAD4F32504907A52519E /* iOS */ = { isa = PBXGroup; children = ( @@ -209,9 +272,11 @@ DE024D5222A10136B241B6C3E94509B0 /* Classes */ = { isa = PBXGroup; children = ( - 35C602D9F938DE514DC21585F3A2AA87 /* ReplaceMe.swift */, + CFC1CB251FE31C4800FF9F3E /* View */, + CF3102C61FE3DBEF00658587 /* ViewModel */, + CF3102BF1FE3DBE700658587 /* Models */, + CF3102C21FE3DBE700658587 /* Resources */, ); - name = Classes; path = Classes; sourceTree = ""; }; @@ -220,7 +285,6 @@ children = ( DE024D5222A10136B241B6C3E94509B0 /* Classes */, ); - name = ABExpandableView; path = ABExpandableView; sourceTree = ""; }; @@ -314,6 +378,11 @@ attributes = { LastSwiftUpdateCheck = 0830; LastUpgradeCheck = 0700; + TargetAttributes = { + CB1A7ED4A4F44CF6731787471D608572 = { + LastSwiftMigration = 0910; + }; + }; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -347,8 +416,12 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + CF3102C51FE3DBE700658587 /* SectionItem.swift in Sources */, + CFC1CB2B1FE31C6700FF9F3E /* ExpandableSectionsViewController.swift in Sources */, + CF3102BE1FE3DBB500658587 /* ExpandableHeaderView.swift in Sources */, FE947B27766BF250350A221693DED20D /* ABExpandableView-dummy.m in Sources */, - DC75373E4C56C93FE46F5F24093754CB /* ReplaceMe.swift in Sources */, + CF3102BD1FE3DBB500658587 /* SelectionCell.swift in Sources */, + CF3102C41FE3DBE700658587 /* RowItem.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -589,6 +662,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 9A618B1705B3DD0B6E3B7421651D05D0 /* ABExpandableView.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -654,6 +728,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 9A618B1705B3DD0B6E3B7421651D05D0 /* ABExpandableView.xcconfig */; buildSettings = { + CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";