You've already forked FinalYearProject-MyMind
mirror of
https://github.com/MrLyallCSIT/FinalYearProject-MyMind.git
synced 2026-01-18 07:09:41 +00:00
Creation of Test Plan and FYP Report
This commit is contained in:
12
My Mind/Pods/Manifest.lock
generated
12
My Mind/Pods/Manifest.lock
generated
@@ -1,12 +0,0 @@
|
||||
PODS:
|
||||
- SwiftForms (1.7)
|
||||
|
||||
DEPENDENCIES:
|
||||
- SwiftForms
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
SwiftForms: 3f3dbaa79fe54eb1ccd0aca8d0cd1e38eb00537e
|
||||
|
||||
PODFILE CHECKSUM: 151404a3c6461c3500cb5ad53873feed64782084
|
||||
|
||||
COCOAPODS: 1.2.0
|
||||
636
My Mind/Pods/Pods.xcodeproj/project.pbxproj
generated
636
My Mind/Pods/Pods.xcodeproj/project.pbxproj
generated
@@ -1,636 +0,0 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
03EF3F933BB7251A1855CC94603DEC65 /* FormTextViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E0442D246B6BE5D63794A8272CD29D7 /* FormTextViewCell.swift */; };
|
||||
07C50FD8924C352E6192E17407164548 /* FormTitleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6457A2AD94C92744CD529A259963A815 /* FormTitleCell.swift */; };
|
||||
0C7BA74D44509C4986CD91162B3EACD2 /* Pods-My Mind-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D773D6E8A4D08EA369BA62CBB15C96D /* Pods-My Mind-dummy.m */; };
|
||||
13631CF19ACBBA00003AE4FF6E80A950 /* SwiftForms-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FDBC4734700A671C779EA1E95AB491DE /* SwiftForms-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
14A9620A964C13211F1EA8A2C0B22F8A /* FormButtonCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE6C8D17D783210FA4F2135AFC7916FD /* FormButtonCell.swift */; };
|
||||
1A955F2BB60628E3623F62E5A0A21CA9 /* FormStepperCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3392BDF079C5F5110F21F7FF6D2A9CB6 /* FormStepperCell.swift */; };
|
||||
2C8C7B65A39424B4877895B6B49B1A45 /* FormBaseCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBF1A92E42C705D845954FA5022B5A2 /* FormBaseCell.swift */; };
|
||||
3746ACDA34C83B83E0B761CA2427AF45 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */; };
|
||||
3B17D2DBF7FAD1D61DC2EA1820B39C58 /* FormLabelCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC9694CA0CCB81F33F7401D39E62F6AC /* FormLabelCell.swift */; };
|
||||
3DE2D07D73CBE76023937DD2C8A52DA5 /* FormRowDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 779CFE9CE7E3C9DF648387F479F8B136 /* FormRowDescriptor.swift */; };
|
||||
559644BAD1D89F61959C5F9A2A29DA05 /* FormSliderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 414D52CE9DE007B0034F186E334938B0 /* FormSliderCell.swift */; };
|
||||
66A1F137D80EC517C5BA912E0896E0B1 /* FormOptionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCA69E49E73FACABB6836F7ABDE5CFEA /* FormOptionsViewController.swift */; };
|
||||
71F121A2694B47FEE7AD4820596B9C5A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */; };
|
||||
82410AA8266CE2A9E535A82E3581C07D /* FormDateCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8704DCCB3EE207F1B48B58E6D98D30B4 /* FormDateCell.swift */; };
|
||||
90C734E50A52D9134711E065EF61AF74 /* FormCheckCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F08D64CD66CA323CA3BD90B78CCFDF8 /* FormCheckCell.swift */; };
|
||||
99EA20C0AE4622CF0EE25D99DBEC8D91 /* SwiftForms-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D2A074BADC9C26DBD8651FA2717962A /* SwiftForms-dummy.m */; };
|
||||
9C5DFD2AEDD675AD1C43D2DB64B484D3 /* FormSegmentedControlCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2EEDBA44BDD15023CDE3C3AAB2862ED /* FormSegmentedControlCell.swift */; };
|
||||
9CAEA25DD38FEBD23E16488DD196FDDD /* FormPickerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2791E57E6C92C67EF47313BD1472F157 /* FormPickerCell.swift */; };
|
||||
A1C3C3F28D353A1AC564CDC5B52E4E85 /* FormValueCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF069E602A7B33C4CA309B381B899ADA /* FormValueCell.swift */; };
|
||||
A50C14E484188D2D4EC6A6FD14FCA196 /* FormTextFieldCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 287AD7B612AC84C8522177DDA99A7D3E /* FormTextFieldCell.swift */; };
|
||||
A92CBEE5843E6C47D2E2FAF016E92242 /* FormSwitchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D7828A1FBE7FF6B63B5AF1C1870226E /* FormSwitchCell.swift */; };
|
||||
BEA9B2179B3019F3C09D5AA4D30631D8 /* FormSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F164AC8B6863637ADC41FADF29F81D0 /* FormSelector.swift */; };
|
||||
C429747674AB0C639C41B70836F11F3F /* Pods-My Mind-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 58B766CB74D8B5A07596DCB37A3EB579 /* Pods-My Mind-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
CA6F4D9178F0E4AC67FBD0B72C650D08 /* FormSelectorCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B32BB291079004139037A1E02979B18 /* FormSelectorCell.swift */; };
|
||||
D49EDC86FBB50663006E51EFC89AF8CD /* FormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC634DB4E68B431AE9845A139E8BC780 /* FormViewController.swift */; };
|
||||
DABC76BFB50777F18A45BDD9C7AED299 /* FormSectionDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE9729E66ED6974E55471C264D7E9F40 /* FormSectionDescriptor.swift */; };
|
||||
F248C607B8B918D558072A73B1F798DC /* FormErrorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9965589ABC4D4A27DA470B4410CB0382 /* FormErrorType.swift */; };
|
||||
F9D30ABD8814CDD8A0F7A971D4BC0FAA /* FormDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 462B26F93955ABF531DB2A727EF8F840 /* FormDescriptor.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
40FEB4AE19752E6CA4DBD84A7E1FF5C5 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 7C88BBED096F0D59AE5BF5BB6F95A358;
|
||||
remoteInfo = SwiftForms;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
022676B8F22402DBC50BE1A0B8DD4FD4 /* Pods-My Mind.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-My Mind.modulemap"; sourceTree = "<group>"; };
|
||||
0A57199DBEA3CA847CAE8E043FC2E457 /* Pods-My Mind.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-My Mind.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
0B32BB291079004139037A1E02979B18 /* FormSelectorCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormSelectorCell.swift; path = SwiftForms/cells/FormSelectorCell.swift; sourceTree = "<group>"; };
|
||||
0D7828A1FBE7FF6B63B5AF1C1870226E /* FormSwitchCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormSwitchCell.swift; path = SwiftForms/cells/FormSwitchCell.swift; sourceTree = "<group>"; };
|
||||
1E0442D246B6BE5D63794A8272CD29D7 /* FormTextViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormTextViewCell.swift; path = SwiftForms/cells/FormTextViewCell.swift; sourceTree = "<group>"; };
|
||||
1E9596DA53A5D63845EB86C8F80BD3CB /* SwiftForms-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftForms-prefix.pch"; sourceTree = "<group>"; };
|
||||
2791E57E6C92C67EF47313BD1472F157 /* FormPickerCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormPickerCell.swift; path = SwiftForms/cells/FormPickerCell.swift; sourceTree = "<group>"; };
|
||||
287AD7B612AC84C8522177DDA99A7D3E /* FormTextFieldCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormTextFieldCell.swift; path = SwiftForms/cells/FormTextFieldCell.swift; sourceTree = "<group>"; };
|
||||
3258E5EDEBE9426F23F1ED1D835D80E8 /* Pods_My_Mind.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_My_Mind.framework; path = "Pods-My Mind.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
3392BDF079C5F5110F21F7FF6D2A9CB6 /* FormStepperCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormStepperCell.swift; path = SwiftForms/cells/FormStepperCell.swift; sourceTree = "<group>"; };
|
||||
3AD9B5B8C30C59FDA839FF3D4B18F57F /* Pods-My Mind-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-My Mind-resources.sh"; sourceTree = "<group>"; };
|
||||
414D52CE9DE007B0034F186E334938B0 /* FormSliderCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormSliderCell.swift; path = SwiftForms/cells/FormSliderCell.swift; sourceTree = "<group>"; };
|
||||
462B26F93955ABF531DB2A727EF8F840 /* FormDescriptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormDescriptor.swift; path = SwiftForms/descriptors/FormDescriptor.swift; sourceTree = "<group>"; };
|
||||
58B766CB74D8B5A07596DCB37A3EB579 /* Pods-My Mind-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-My Mind-umbrella.h"; sourceTree = "<group>"; };
|
||||
5D773D6E8A4D08EA369BA62CBB15C96D /* Pods-My Mind-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-My Mind-dummy.m"; sourceTree = "<group>"; };
|
||||
5F08D64CD66CA323CA3BD90B78CCFDF8 /* FormCheckCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormCheckCell.swift; path = SwiftForms/cells/FormCheckCell.swift; sourceTree = "<group>"; };
|
||||
5F164AC8B6863637ADC41FADF29F81D0 /* FormSelector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormSelector.swift; path = SwiftForms/controllers/FormSelector.swift; sourceTree = "<group>"; };
|
||||
6457A2AD94C92744CD529A259963A815 /* FormTitleCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormTitleCell.swift; path = SwiftForms/cells/base/FormTitleCell.swift; sourceTree = "<group>"; };
|
||||
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; };
|
||||
70D83ACF9E83D5C34BD3C6CCDB48DDCE /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
75C470EF25905B747DB66014970805D2 /* SwiftForms.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftForms.xcconfig; sourceTree = "<group>"; };
|
||||
779CFE9CE7E3C9DF648387F479F8B136 /* FormRowDescriptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormRowDescriptor.swift; path = SwiftForms/descriptors/FormRowDescriptor.swift; sourceTree = "<group>"; };
|
||||
7E7D16F1C508025CE290F3AF400A9A2E /* Pods-My Mind-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-My Mind-acknowledgements.plist"; sourceTree = "<group>"; };
|
||||
8704DCCB3EE207F1B48B58E6D98D30B4 /* FormDateCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormDateCell.swift; path = SwiftForms/cells/FormDateCell.swift; sourceTree = "<group>"; };
|
||||
8D2A074BADC9C26DBD8651FA2717962A /* SwiftForms-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftForms-dummy.m"; sourceTree = "<group>"; };
|
||||
93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
|
||||
9965589ABC4D4A27DA470B4410CB0382 /* FormErrorType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormErrorType.swift; path = SwiftForms/FormErrorType.swift; sourceTree = "<group>"; };
|
||||
9CBF1A92E42C705D845954FA5022B5A2 /* FormBaseCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormBaseCell.swift; path = SwiftForms/cells/base/FormBaseCell.swift; sourceTree = "<group>"; };
|
||||
A9052E612873E18154BCD8BE797E4088 /* Pods-My Mind.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-My Mind.release.xcconfig"; sourceTree = "<group>"; };
|
||||
AB91AB87E82CBF4568B660DE620E93D1 /* SwiftForms.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = SwiftForms.modulemap; sourceTree = "<group>"; };
|
||||
AE9729E66ED6974E55471C264D7E9F40 /* FormSectionDescriptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormSectionDescriptor.swift; path = SwiftForms/descriptors/FormSectionDescriptor.swift; sourceTree = "<group>"; };
|
||||
BC634DB4E68B431AE9845A139E8BC780 /* FormViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormViewController.swift; path = SwiftForms/controllers/FormViewController.swift; sourceTree = "<group>"; };
|
||||
BCA69E49E73FACABB6836F7ABDE5CFEA /* FormOptionsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormOptionsViewController.swift; path = SwiftForms/controllers/FormOptionsViewController.swift; sourceTree = "<group>"; };
|
||||
BF069E602A7B33C4CA309B381B899ADA /* FormValueCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormValueCell.swift; path = SwiftForms/cells/base/FormValueCell.swift; sourceTree = "<group>"; };
|
||||
C2EEDBA44BDD15023CDE3C3AAB2862ED /* FormSegmentedControlCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormSegmentedControlCell.swift; path = SwiftForms/cells/FormSegmentedControlCell.swift; sourceTree = "<group>"; };
|
||||
C80642FD21D2FEB45826BAC06B2FA99B /* SwiftForms.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SwiftForms.framework; path = SwiftForms.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
CE6C8D17D783210FA4F2135AFC7916FD /* FormButtonCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormButtonCell.swift; path = SwiftForms/cells/FormButtonCell.swift; sourceTree = "<group>"; };
|
||||
D868AE79960303F26602C164E13DEE09 /* Pods-My Mind-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-My Mind-acknowledgements.markdown"; sourceTree = "<group>"; };
|
||||
EAEF8B9A7A8BB3C570A810595F1CD946 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
FC9694CA0CCB81F33F7401D39E62F6AC /* FormLabelCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormLabelCell.swift; path = SwiftForms/cells/FormLabelCell.swift; sourceTree = "<group>"; };
|
||||
FDBC4734700A671C779EA1E95AB491DE /* SwiftForms-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftForms-umbrella.h"; sourceTree = "<group>"; };
|
||||
FEBEAD6123DCBBBCA0982CF92D6F222A /* Pods-My Mind-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-My Mind-frameworks.sh"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
2E5568F0C0388DB5422A0FF5C9D4340B /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3746ACDA34C83B83E0B761CA2427AF45 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
62C06DE3E53A47AE58A64713E66052D3 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
71F121A2694B47FEE7AD4820596B9C5A /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
285A40EEC8D15E6425A802DCA6C2D1DF /* SwiftForms */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9CBF1A92E42C705D845954FA5022B5A2 /* FormBaseCell.swift */,
|
||||
CE6C8D17D783210FA4F2135AFC7916FD /* FormButtonCell.swift */,
|
||||
5F08D64CD66CA323CA3BD90B78CCFDF8 /* FormCheckCell.swift */,
|
||||
8704DCCB3EE207F1B48B58E6D98D30B4 /* FormDateCell.swift */,
|
||||
462B26F93955ABF531DB2A727EF8F840 /* FormDescriptor.swift */,
|
||||
9965589ABC4D4A27DA470B4410CB0382 /* FormErrorType.swift */,
|
||||
FC9694CA0CCB81F33F7401D39E62F6AC /* FormLabelCell.swift */,
|
||||
BCA69E49E73FACABB6836F7ABDE5CFEA /* FormOptionsViewController.swift */,
|
||||
2791E57E6C92C67EF47313BD1472F157 /* FormPickerCell.swift */,
|
||||
779CFE9CE7E3C9DF648387F479F8B136 /* FormRowDescriptor.swift */,
|
||||
AE9729E66ED6974E55471C264D7E9F40 /* FormSectionDescriptor.swift */,
|
||||
C2EEDBA44BDD15023CDE3C3AAB2862ED /* FormSegmentedControlCell.swift */,
|
||||
5F164AC8B6863637ADC41FADF29F81D0 /* FormSelector.swift */,
|
||||
0B32BB291079004139037A1E02979B18 /* FormSelectorCell.swift */,
|
||||
414D52CE9DE007B0034F186E334938B0 /* FormSliderCell.swift */,
|
||||
3392BDF079C5F5110F21F7FF6D2A9CB6 /* FormStepperCell.swift */,
|
||||
0D7828A1FBE7FF6B63B5AF1C1870226E /* FormSwitchCell.swift */,
|
||||
287AD7B612AC84C8522177DDA99A7D3E /* FormTextFieldCell.swift */,
|
||||
1E0442D246B6BE5D63794A8272CD29D7 /* FormTextViewCell.swift */,
|
||||
6457A2AD94C92744CD529A259963A815 /* FormTitleCell.swift */,
|
||||
BF069E602A7B33C4CA309B381B899ADA /* FormValueCell.swift */,
|
||||
BC634DB4E68B431AE9845A139E8BC780 /* FormViewController.swift */,
|
||||
ACF1C5C7147FB66FF31EF5238BCD23E4 /* Support Files */,
|
||||
);
|
||||
name = SwiftForms;
|
||||
path = SwiftForms;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7DB346D0F39D3F0E887471402A8071AB = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */,
|
||||
BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */,
|
||||
FCD0D99CB0CABE779274F20E03F26BF3 /* Pods */,
|
||||
B6B6B83F1A0657BD51A58C75F7E58530 /* Products */,
|
||||
9F272CB3B6AD25AE526BE31CF1A3EEE8 /* Targets Support Files */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8ED74E6C79FEB403C3D668FE4CF1CDB2 /* Pods-My Mind */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EAEF8B9A7A8BB3C570A810595F1CD946 /* Info.plist */,
|
||||
022676B8F22402DBC50BE1A0B8DD4FD4 /* Pods-My Mind.modulemap */,
|
||||
D868AE79960303F26602C164E13DEE09 /* Pods-My Mind-acknowledgements.markdown */,
|
||||
7E7D16F1C508025CE290F3AF400A9A2E /* Pods-My Mind-acknowledgements.plist */,
|
||||
5D773D6E8A4D08EA369BA62CBB15C96D /* Pods-My Mind-dummy.m */,
|
||||
FEBEAD6123DCBBBCA0982CF92D6F222A /* Pods-My Mind-frameworks.sh */,
|
||||
3AD9B5B8C30C59FDA839FF3D4B18F57F /* Pods-My Mind-resources.sh */,
|
||||
58B766CB74D8B5A07596DCB37A3EB579 /* Pods-My Mind-umbrella.h */,
|
||||
0A57199DBEA3CA847CAE8E043FC2E457 /* Pods-My Mind.debug.xcconfig */,
|
||||
A9052E612873E18154BCD8BE797E4088 /* Pods-My Mind.release.xcconfig */,
|
||||
);
|
||||
name = "Pods-My Mind";
|
||||
path = "Target Support Files/Pods-My Mind";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9F272CB3B6AD25AE526BE31CF1A3EEE8 /* Targets Support Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8ED74E6C79FEB403C3D668FE4CF1CDB2 /* Pods-My Mind */,
|
||||
);
|
||||
name = "Targets Support Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
ACF1C5C7147FB66FF31EF5238BCD23E4 /* Support Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
70D83ACF9E83D5C34BD3C6CCDB48DDCE /* Info.plist */,
|
||||
AB91AB87E82CBF4568B660DE620E93D1 /* SwiftForms.modulemap */,
|
||||
75C470EF25905B747DB66014970805D2 /* SwiftForms.xcconfig */,
|
||||
8D2A074BADC9C26DBD8651FA2717962A /* SwiftForms-dummy.m */,
|
||||
1E9596DA53A5D63845EB86C8F80BD3CB /* SwiftForms-prefix.pch */,
|
||||
FDBC4734700A671C779EA1E95AB491DE /* SwiftForms-umbrella.h */,
|
||||
);
|
||||
name = "Support Files";
|
||||
path = "../Target Support Files/SwiftForms";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B6B6B83F1A0657BD51A58C75F7E58530 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3258E5EDEBE9426F23F1ED1D835D80E8 /* Pods_My_Mind.framework */,
|
||||
C80642FD21D2FEB45826BAC06B2FA99B /* SwiftForms.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D35AF013A5F0BAD4F32504907A52519E /* iOS */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D35AF013A5F0BAD4F32504907A52519E /* iOS */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6604A7D69453B4569E4E4827FB9155A9 /* Foundation.framework */,
|
||||
);
|
||||
name = iOS;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FCD0D99CB0CABE779274F20E03F26BF3 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
285A40EEC8D15E6425A802DCA6C2D1DF /* SwiftForms */,
|
||||
);
|
||||
name = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
2E0BC26F0A617D9EB239BBB619FF8BAC /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
C429747674AB0C639C41B70836F11F3F /* Pods-My Mind-umbrella.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
EDC43E23F92B99DE831A38277B456D39 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
13631CF19ACBBA00003AE4FF6E80A950 /* SwiftForms-umbrella.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
33988396BCE45C5796DD8492DEF2041F /* Pods-My Mind */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 0681E253ADECF8232FC446EDF708E36B /* Build configuration list for PBXNativeTarget "Pods-My Mind" */;
|
||||
buildPhases = (
|
||||
3CBB4A6BA0AAB00E4F5B96D9105C5ECD /* Sources */,
|
||||
2E5568F0C0388DB5422A0FF5C9D4340B /* Frameworks */,
|
||||
2E0BC26F0A617D9EB239BBB619FF8BAC /* Headers */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
2B2F37FF3A808D8A04865A7EBD71AF0F /* PBXTargetDependency */,
|
||||
);
|
||||
name = "Pods-My Mind";
|
||||
productName = "Pods-My Mind";
|
||||
productReference = 3258E5EDEBE9426F23F1ED1D835D80E8 /* Pods_My_Mind.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
7C88BBED096F0D59AE5BF5BB6F95A358 /* SwiftForms */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = F7F88DF26ADD5FC7753D2E02B27210FA /* Build configuration list for PBXNativeTarget "SwiftForms" */;
|
||||
buildPhases = (
|
||||
02A595511BA1136A400E342900E799E3 /* Sources */,
|
||||
62C06DE3E53A47AE58A64713E66052D3 /* Frameworks */,
|
||||
EDC43E23F92B99DE831A38277B456D39 /* Headers */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = SwiftForms;
|
||||
productName = SwiftForms;
|
||||
productReference = C80642FD21D2FEB45826BAC06B2FA99B /* SwiftForms.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
D41D8CD98F00B204E9800998ECF8427E /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 0830;
|
||||
LastUpgradeCheck = 0700;
|
||||
};
|
||||
buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 7DB346D0F39D3F0E887471402A8071AB;
|
||||
productRefGroup = B6B6B83F1A0657BD51A58C75F7E58530 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
33988396BCE45C5796DD8492DEF2041F /* Pods-My Mind */,
|
||||
7C88BBED096F0D59AE5BF5BB6F95A358 /* SwiftForms */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
02A595511BA1136A400E342900E799E3 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
2C8C7B65A39424B4877895B6B49B1A45 /* FormBaseCell.swift in Sources */,
|
||||
14A9620A964C13211F1EA8A2C0B22F8A /* FormButtonCell.swift in Sources */,
|
||||
90C734E50A52D9134711E065EF61AF74 /* FormCheckCell.swift in Sources */,
|
||||
82410AA8266CE2A9E535A82E3581C07D /* FormDateCell.swift in Sources */,
|
||||
F9D30ABD8814CDD8A0F7A971D4BC0FAA /* FormDescriptor.swift in Sources */,
|
||||
F248C607B8B918D558072A73B1F798DC /* FormErrorType.swift in Sources */,
|
||||
3B17D2DBF7FAD1D61DC2EA1820B39C58 /* FormLabelCell.swift in Sources */,
|
||||
66A1F137D80EC517C5BA912E0896E0B1 /* FormOptionsViewController.swift in Sources */,
|
||||
9CAEA25DD38FEBD23E16488DD196FDDD /* FormPickerCell.swift in Sources */,
|
||||
3DE2D07D73CBE76023937DD2C8A52DA5 /* FormRowDescriptor.swift in Sources */,
|
||||
DABC76BFB50777F18A45BDD9C7AED299 /* FormSectionDescriptor.swift in Sources */,
|
||||
9C5DFD2AEDD675AD1C43D2DB64B484D3 /* FormSegmentedControlCell.swift in Sources */,
|
||||
BEA9B2179B3019F3C09D5AA4D30631D8 /* FormSelector.swift in Sources */,
|
||||
CA6F4D9178F0E4AC67FBD0B72C650D08 /* FormSelectorCell.swift in Sources */,
|
||||
559644BAD1D89F61959C5F9A2A29DA05 /* FormSliderCell.swift in Sources */,
|
||||
1A955F2BB60628E3623F62E5A0A21CA9 /* FormStepperCell.swift in Sources */,
|
||||
A92CBEE5843E6C47D2E2FAF016E92242 /* FormSwitchCell.swift in Sources */,
|
||||
A50C14E484188D2D4EC6A6FD14FCA196 /* FormTextFieldCell.swift in Sources */,
|
||||
03EF3F933BB7251A1855CC94603DEC65 /* FormTextViewCell.swift in Sources */,
|
||||
07C50FD8924C352E6192E17407164548 /* FormTitleCell.swift in Sources */,
|
||||
A1C3C3F28D353A1AC564CDC5B52E4E85 /* FormValueCell.swift in Sources */,
|
||||
D49EDC86FBB50663006E51EFC89AF8CD /* FormViewController.swift in Sources */,
|
||||
99EA20C0AE4622CF0EE25D99DBEC8D91 /* SwiftForms-dummy.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
3CBB4A6BA0AAB00E4F5B96D9105C5ECD /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0C7BA74D44509C4986CD91162B3EACD2 /* Pods-My Mind-dummy.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
2B2F37FF3A808D8A04865A7EBD71AF0F /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = SwiftForms;
|
||||
target = 7C88BBED096F0D59AE5BF5BB6F95A358 /* SwiftForms */;
|
||||
targetProxy = 40FEB4AE19752E6CA4DBD84A7E1FF5C5 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
0C05EE70331FA55C2209CD58C75FD498 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = A9052E612873E18154BCD8BE797E4088 /* Pods-My Mind.release.xcconfig */;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
INFOPLIST_FILE = "Target Support Files/Pods-My Mind/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MACH_O_TYPE = staticlib;
|
||||
MODULEMAP_FILE = "Target Support Files/Pods-My Mind/Pods-My Mind.modulemap";
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_LIBTOOLFLAGS = "";
|
||||
PODS_ROOT = "$(SRCROOT)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = Pods_My_Mind;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_VERSION = 3.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
1ECDBFE19F75B50026F2AE72409054DA /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 75C470EF25905B747DB66014970805D2 /* SwiftForms.xcconfig */;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_PREFIX_HEADER = "Target Support Files/SwiftForms/SwiftForms-prefix.pch";
|
||||
INFOPLIST_FILE = "Target Support Files/SwiftForms/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MODULEMAP_FILE = "Target Support Files/SwiftForms/SwiftForms.modulemap";
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
PRODUCT_NAME = SwiftForms;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 3.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
43C67B241F8C48503D4EAD77E1433900 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 0A57199DBEA3CA847CAE8E043FC2E457 /* Pods-My Mind.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
INFOPLIST_FILE = "Target Support Files/Pods-My Mind/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MACH_O_TYPE = staticlib;
|
||||
MODULEMAP_FILE = "Target Support Files/Pods-My Mind/Pods-My Mind.modulemap";
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_LIBTOOLFLAGS = "";
|
||||
PODS_ROOT = "$(SRCROOT)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = Pods_My_Mind;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 3.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
643C76AA582046977B7877822ED7A258 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
|
||||
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_OBJC_ROOT_CLASS = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGNING_REQUIRED = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"POD_CONFIGURATION_DEBUG=1",
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/;
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
SYMROOT = "${SRCROOT}/../build";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
8328E94705188774EBEB34FAF4473804 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 75C470EF25905B747DB66014970805D2 /* SwiftForms.xcconfig */;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
"CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_PREFIX_HEADER = "Target Support Files/SwiftForms/SwiftForms-prefix.pch";
|
||||
INFOPLIST_FILE = "Target Support Files/SwiftForms/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MODULEMAP_FILE = "Target Support Files/SwiftForms/SwiftForms.modulemap";
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
PRODUCT_NAME = SwiftForms;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_VERSION = 3.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
C03B8870130C98D1B02B59D003687524 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
|
||||
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_OBJC_ROOT_CLASS = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGNING_REQUIRED = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"POD_CONFIGURATION_RELEASE=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
|
||||
PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/;
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
SYMROOT = "${SRCROOT}/../build";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
0681E253ADECF8232FC446EDF708E36B /* Build configuration list for PBXNativeTarget "Pods-My Mind" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
43C67B241F8C48503D4EAD77E1433900 /* Debug */,
|
||||
0C05EE70331FA55C2209CD58C75FD498 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
643C76AA582046977B7877822ED7A258 /* Debug */,
|
||||
C03B8870130C98D1B02B59D003687524 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
F7F88DF26ADD5FC7753D2E02B27210FA /* Build configuration list for PBXNativeTarget "SwiftForms" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1ECDBFE19F75B50026F2AE72409054DA /* Debug */,
|
||||
8328E94705188774EBEB34FAF4473804 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
Binary file not shown.
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildLocationStyle</key>
|
||||
<string>UseTargetSettings</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,71 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0700"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "33988396BCE45C5796DD8492DEF2041F"
|
||||
BuildableName = "Pods_My_Mind.framework"
|
||||
BlueprintName = "Pods-My Mind"
|
||||
ReferencedContainer = "container:Pods.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "33988396BCE45C5796DD8492DEF2041F"
|
||||
BuildableName = "Pods_My_Mind.framework"
|
||||
BlueprintName = "Pods-My Mind"
|
||||
ReferencedContainer = "container:Pods.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -1,60 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0700"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForAnalyzing = "YES"
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = 'primary'
|
||||
BlueprintIdentifier = '7C88BBED096F0D59AE5BF5BB6F95A358'
|
||||
BlueprintName = 'SwiftForms'
|
||||
ReferencedContainer = 'container:Pods.xcodeproj'
|
||||
BuildableName = 'SwiftForms.framework'>
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
buildConfiguration = "Debug"
|
||||
allowLocationSimulation = "YES">
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -1,32 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>SchemeUserState</key>
|
||||
<dict>
|
||||
<key>Pods-My Mind.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>SwiftForms.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>SuppressBuildableAutocreation</key>
|
||||
<dict>
|
||||
<key>33988396BCE45C5796DD8492DEF2041F</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>7C88BBED096F0D59AE5BF5BB6F95A358</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
21
My Mind/Pods/SwiftForms/LICENSE
generated
21
My Mind/Pods/SwiftForms/LICENSE
generated
@@ -1,21 +0,0 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Xmartlabs ( http://xmartlabs.com )
|
||||
Copyright (c) 2014 Miguel Ángel Ortuño ( ortuman@gmail.com )
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
155
My Mind/Pods/SwiftForms/README.MD
generated
155
My Mind/Pods/SwiftForms/README.MD
generated
@@ -1,155 +0,0 @@
|
||||
|
||||
[](http://cocoadocs.org/docsets/SwiftForms)
|
||||
[](https://github.com/Carthage/Carthage)
|
||||
|
||||
[](http://cocoadocs.org/docsets/SwiftForms)
|
||||
[](http://cocoadocs.org/docsets/SwiftForms)
|
||||
|
||||
SwiftForms
|
||||
==========
|
||||
|
||||
Purpose
|
||||
-------
|
||||
SwiftForms is a powerful and extremely flexible library written in Swift that allows to create forms by just defining them in a couple of lines. It also provides the ability to customize cells appearance, use custom cells and define your own selector controllers.
|
||||
|
||||
#####Here is an screenshot from an example application using SwiftForms
|
||||
|
||||

|
||||
|
||||
How to create a form
|
||||
--------------------
|
||||
|
||||
Creating a form using SwiftForms is pretty straightforward. All you need is to derive your controller from `FormViewController` and define a `FormDescriptor` instance along with its sections and rows. Here is an example of how to create a simple form to input an email and a user password.
|
||||
|
||||
```swift
|
||||
|
||||
// Create form instace
|
||||
var form = FormDescriptor()
|
||||
form.title = "Example form"
|
||||
|
||||
// Define first section
|
||||
var section1 = FormSectionDescriptor()
|
||||
|
||||
var row = FormRowDescriptor(tag: "name", rowType: .Email, title: "Email")
|
||||
section1.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: "pass", rowType: .Password, title: "Password")
|
||||
section1.rows.append(row)
|
||||
|
||||
// Define second section
|
||||
var section2 = FormSectionDescriptor()
|
||||
|
||||
row = FormRowDescriptor(tag: "button", rowType: .Button, title: "Submit")
|
||||
section2.rows.append(row)
|
||||
|
||||
form.sections = [section1, section2]
|
||||
|
||||
self.form = form
|
||||
```
|
||||
To see a more complex form definition you can take a look to the example application.
|
||||
|
||||
Cell appearance
|
||||
----------------------
|
||||
|
||||
Every row descriptor has a `configuration` dictionary that allows to customize cell's appearance and behavior. In order to change concrete visual aspects of a row simply set `row.configuration.cell.appearance` value to a dictionary containing custom key-value coding properties.
|
||||
|
||||
Here's an example:
|
||||
|
||||
```swift
|
||||
row.configuration.cell.appearance = ["titleLabel.font" : UIFont.boldSystemFontOfSize(30.0), "segmentedControl.tintColor" : UIColor.redColor()]
|
||||
```
|
||||
|
||||
Custom cells
|
||||
-----------------
|
||||
|
||||
In addition, it is possible to create 100% custom cells by deriving from `FormBaseCell` class. In that case, don't forget to override `configure` and `update` methods. First method will be called only once and after cell has been created, and the second one every time cell content should be refreshed.
|
||||
|
||||
Here are the methods that help you to define custom cell behavior.
|
||||
```swift
|
||||
func configure() {
|
||||
/// override
|
||||
}
|
||||
|
||||
func update() {
|
||||
/// override
|
||||
}
|
||||
|
||||
class func formRowCellHeight() -> CGFloat {
|
||||
return 44.0
|
||||
}
|
||||
|
||||
class func formViewController(formViewController: FormViewController, didSelectRow: FormBaseCell) {
|
||||
}
|
||||
```
|
||||
Once you have defined your custom cell, and in order to use it for a concrete row, you'll have to set `FormRowDescriptor` cellClass property.
|
||||
|
||||
Custom selector controllers
|
||||
-------------------------------------
|
||||
|
||||
In order to customize selector controller your class should conform to `FormSelector` protocol. That way you'll have access to the cell instance that pushed the controller, being able to alter its properties or setting it's row value accordingly to user interaction.
|
||||
|
||||
After defining your class, don't forget to set `row.configuration.selection.controllerClass` value in the configuration dictionary to use your custom selector controller.
|
||||
|
||||
Requirements
|
||||
---------------------
|
||||
|
||||
* iOS 8.0 and above
|
||||
|
||||
### CocoaPods
|
||||
|
||||
[CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects.
|
||||
|
||||
CocoaPods 0.36 adds supports for Swift and embedded frameworks. You can install it with the following command:
|
||||
|
||||
```bash
|
||||
$ gem install cocoapods
|
||||
```
|
||||
|
||||
To integrate SwiftForms into your Xcode project using CocoaPods, specify it in your `Podfile`:
|
||||
|
||||
```ruby
|
||||
source 'https://github.com/CocoaPods/Specs.git'
|
||||
platform :ios, '8.0'
|
||||
use_frameworks!
|
||||
|
||||
pod 'SwiftForms'
|
||||
```
|
||||
|
||||
Then, run the following command:
|
||||
|
||||
```bash
|
||||
$ pod install
|
||||
```
|
||||
|
||||
### Carthage
|
||||
|
||||
Simply add the following line to your `Cartfile`:
|
||||
|
||||
```
|
||||
github "ortuman/SwiftForms"
|
||||
```
|
||||
|
||||
Then run:
|
||||
|
||||
```bash
|
||||
$ carthage update
|
||||
```
|
||||
|
||||
For more information on [Carthage](https://github.com/Carthage/Carthage) see the [README](https://github.com/Carthage/Carthage/blob/master/README.md)
|
||||
|
||||
Copyright
|
||||
---------
|
||||
|
||||
SwiftForms is originally based on XLForm github project. (https://github.com/xmartlabs/XLForm)
|
||||
|
||||
Check LICENSE file for more details.
|
||||
|
||||
Contact
|
||||
-------
|
||||
|
||||
If you are using SwiftForms in your project and have any suggestion or question:
|
||||
|
||||
Miguel Angel Ortuño, <ortuman@gmail.com>
|
||||
|
||||
[@ortuman](http://twitter.com/ortuman)
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
//
|
||||
// FormErrorType.swift
|
||||
// SwiftFormsApplication
|
||||
//
|
||||
// Created by Miguel Angel Ortuno Ortuno on 2/1/16.
|
||||
// Copyright © 2016 Miguel Angel Ortuno Ortuno. All rights reserved.
|
||||
//
|
||||
|
||||
public enum FormErrorType: Error {
|
||||
case sectionOutOfIndex
|
||||
case rowOutOfIndex
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
//
|
||||
// FormButtonCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 21/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormButtonCell: FormTitleCell {
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
titleLabel.textAlignment = .center
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
//
|
||||
// FormCheckCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 22/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormCheckCell: FormTitleCell {
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
selectionStyle = .default
|
||||
accessoryType = .none
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
|
||||
var rowValue: Bool
|
||||
if let value = rowDescriptor?.value as? Bool {
|
||||
rowValue = value
|
||||
} else {
|
||||
rowValue = false
|
||||
rowDescriptor?.value = rowValue as AnyObject
|
||||
}
|
||||
|
||||
accessoryType = (rowValue) ? .checkmark : .none
|
||||
}
|
||||
|
||||
open override class func formViewController(_ formViewController: FormViewController, didSelectRow selectedRow: FormBaseCell) {
|
||||
guard let row = selectedRow as? FormCheckCell else { return }
|
||||
row.check()
|
||||
}
|
||||
|
||||
// MARK: Private interface
|
||||
|
||||
fileprivate func check() {
|
||||
var newValue: Bool
|
||||
if let value = rowDescriptor?.value as? Bool {
|
||||
newValue = !value
|
||||
}
|
||||
else {
|
||||
newValue = true
|
||||
}
|
||||
rowDescriptor?.value = newValue as AnyObject
|
||||
update()
|
||||
}
|
||||
}
|
||||
@@ -1,97 +0,0 @@
|
||||
//
|
||||
// FormDateCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 22/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormDateCell: FormValueCell {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
fileprivate let datePicker = UIDatePicker()
|
||||
fileprivate let hiddenTextField = UITextField(frame: CGRect.zero)
|
||||
|
||||
fileprivate let defaultDateFormatter = DateFormatter()
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
contentView.addSubview(hiddenTextField)
|
||||
hiddenTextField.inputView = datePicker
|
||||
datePicker.datePickerMode = .date
|
||||
datePicker.addTarget(self, action: #selector(FormDateCell.valueChanged(_:)), for: .valueChanged)
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
if let showsInputToolbar = rowDescriptor?.configuration.cell.showsInputToolbar , showsInputToolbar && hiddenTextField.inputAccessoryView == nil {
|
||||
hiddenTextField.inputAccessoryView = inputAccesoryView()
|
||||
}
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
|
||||
if let rowType = rowDescriptor?.type {
|
||||
switch rowType {
|
||||
case .date:
|
||||
datePicker.datePickerMode = .date
|
||||
defaultDateFormatter.dateStyle = .long
|
||||
defaultDateFormatter.timeStyle = .none
|
||||
case .time:
|
||||
datePicker.datePickerMode = .time
|
||||
defaultDateFormatter.dateStyle = .none
|
||||
defaultDateFormatter.timeStyle = .short
|
||||
default:
|
||||
datePicker.datePickerMode = .dateAndTime
|
||||
defaultDateFormatter.dateStyle = .long
|
||||
defaultDateFormatter.timeStyle = .short
|
||||
}
|
||||
}
|
||||
|
||||
if let date = rowDescriptor?.value as? Date {
|
||||
datePicker.date = date
|
||||
valueLabel.text = getDateFormatter().string(from: date)
|
||||
}
|
||||
}
|
||||
|
||||
open override class func formViewController(_ formViewController: FormViewController, didSelectRow selectedRow: FormBaseCell) {
|
||||
guard let row = selectedRow as? FormDateCell else { return }
|
||||
|
||||
if row.rowDescriptor?.value == nil {
|
||||
let date = Date()
|
||||
row.rowDescriptor?.value = date as AnyObject
|
||||
row.valueLabel.text = row.getDateFormatter().string(from: date)
|
||||
row.update()
|
||||
}
|
||||
|
||||
row.hiddenTextField.becomeFirstResponder()
|
||||
}
|
||||
|
||||
open override func firstResponderElement() -> UIResponder? {
|
||||
return hiddenTextField
|
||||
}
|
||||
|
||||
open override class func formRowCanBecomeFirstResponder() -> Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
internal func valueChanged(_ sender: UIDatePicker) {
|
||||
rowDescriptor?.value = sender.date as AnyObject
|
||||
valueLabel.text = getDateFormatter().string(from: sender.date)
|
||||
update()
|
||||
}
|
||||
|
||||
// MARK: Private interface
|
||||
|
||||
fileprivate func getDateFormatter() -> DateFormatter {
|
||||
guard let dateFormatter = rowDescriptor?.configuration.date.dateFormatter else { return defaultDateFormatter }
|
||||
return dateFormatter
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
//
|
||||
// FormTextFieldCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 20/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
class FormLabelCell: FormValueCell {
|
||||
|
||||
/// MARK: FormBaseCell
|
||||
|
||||
override func configure() {
|
||||
super.configure()
|
||||
|
||||
accessoryType = .none
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
valueLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
valueLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
|
||||
valueLabel.textColor = UIColor.lightGray
|
||||
valueLabel.textAlignment = .right
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(valueLabel)
|
||||
|
||||
titleLabel.setContentHuggingPriority(500, for: .horizontal)
|
||||
titleLabel.setContentCompressionResistancePriority(1000, for: .horizontal)
|
||||
|
||||
// apply constant constraints
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: valueLabel, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: valueLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
}
|
||||
|
||||
override func update() {
|
||||
super.update()
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
valueLabel.text = rowDescriptor?.configuration.cell.placeholder
|
||||
}
|
||||
}
|
||||
@@ -1,104 +0,0 @@
|
||||
//
|
||||
// FormPickerCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 22/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormPickerCell: FormValueCell, UIPickerViewDelegate, UIPickerViewDataSource {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
fileprivate let picker = UIPickerView()
|
||||
fileprivate let hiddenTextField = UITextField(frame: CGRect.zero)
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
accessoryType = .none
|
||||
|
||||
picker.delegate = self
|
||||
picker.dataSource = self
|
||||
hiddenTextField.inputView = picker
|
||||
|
||||
contentView.addSubview(hiddenTextField)
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
picker.reloadAllComponents()
|
||||
|
||||
if let showsInputToolbar = rowDescriptor?.configuration.cell.showsInputToolbar , showsInputToolbar && hiddenTextField.inputAccessoryView == nil {
|
||||
hiddenTextField.inputAccessoryView = inputAccesoryView()
|
||||
}
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
|
||||
if let selectedValue = rowDescriptor?.value {
|
||||
valueLabel.text = rowDescriptor?.configuration.selection.optionTitleClosure?(selectedValue)
|
||||
if let options = rowDescriptor?.configuration.selection.options , !options.isEmpty {
|
||||
var selectedIndex: Int?
|
||||
for (index, value) in options.enumerated() {
|
||||
if value === selectedValue {
|
||||
selectedIndex = index
|
||||
break
|
||||
}
|
||||
}
|
||||
if let index = selectedIndex {
|
||||
picker.selectRow(index, inComponent: 0, animated: false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open override func firstResponderElement() -> UIResponder? {
|
||||
return hiddenTextField
|
||||
}
|
||||
|
||||
open override class func formViewController(_ formViewController: FormViewController, didSelectRow selectedRow: FormBaseCell) {
|
||||
guard let row = selectedRow as? FormPickerCell else { return }
|
||||
|
||||
if selectedRow.rowDescriptor?.value == nil {
|
||||
guard let options = selectedRow.rowDescriptor?.configuration.selection.options , !options.isEmpty else { return }
|
||||
let value = options[0]
|
||||
selectedRow.rowDescriptor?.value = value
|
||||
row.valueLabel.text = selectedRow.rowDescriptor?.configuration.selection.optionTitleClosure?(value)
|
||||
row.hiddenTextField.becomeFirstResponder()
|
||||
} else {
|
||||
guard let value = selectedRow.rowDescriptor?.value else { return }
|
||||
row.valueLabel.text = selectedRow.rowDescriptor?.configuration.selection.optionTitleClosure?(value)
|
||||
row.hiddenTextField.becomeFirstResponder()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: UIPickerViewDelegate
|
||||
|
||||
open func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
|
||||
guard let options = rowDescriptor?.configuration.selection.options , !options.isEmpty else { return nil }
|
||||
guard row < options.count else { return nil }
|
||||
return rowDescriptor?.configuration.selection.optionTitleClosure?(options[row])
|
||||
}
|
||||
|
||||
open func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
|
||||
guard let options = rowDescriptor?.configuration.selection.options , !options.isEmpty else { return }
|
||||
guard row < options.count else { return }
|
||||
let newValue = options[row]
|
||||
rowDescriptor?.value = newValue
|
||||
valueLabel.text = rowDescriptor?.configuration.selection.optionTitleClosure?(newValue)
|
||||
}
|
||||
|
||||
// MARK: UIPickerViewDataSource
|
||||
|
||||
open func numberOfComponents(in pickerView: UIPickerView) -> Int {
|
||||
return 1
|
||||
}
|
||||
|
||||
open func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
|
||||
guard let options = rowDescriptor?.configuration.selection.options else { return 0 }
|
||||
return options.count
|
||||
}
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
//
|
||||
// FormSegmentedControlCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 21/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormSegmentedControlCell: FormBaseCell {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let titleLabel = UILabel()
|
||||
open let segmentedControl = UISegmentedControl()
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
fileprivate var customConstraints: [AnyObject] = []
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
selectionStyle = .none
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
segmentedControl.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.setContentCompressionResistancePriority(500, for: .horizontal)
|
||||
segmentedControl.setContentCompressionResistancePriority(500, for: .horizontal)
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(segmentedControl)
|
||||
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: segmentedControl, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
|
||||
segmentedControl.addTarget(self, action: #selector(FormSegmentedControlCell.valueChanged(_:)), for: .valueChanged)
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
updateSegmentedControl()
|
||||
|
||||
guard let value = rowDescriptor?.value else { return }
|
||||
guard let options = rowDescriptor?.configuration.selection.options , !options.isEmpty else { return }
|
||||
|
||||
var idx = 0
|
||||
for optionValue in options {
|
||||
if optionValue === value {
|
||||
segmentedControl.selectedSegmentIndex = idx
|
||||
break
|
||||
}
|
||||
idx += 1
|
||||
}
|
||||
}
|
||||
|
||||
open override func constraintsViews() -> [String : UIView] {
|
||||
return ["titleLabel" : titleLabel, "segmentedControl" : segmentedControl]
|
||||
}
|
||||
|
||||
open override func defaultVisualConstraints() -> [String] {
|
||||
if let text = titleLabel.text , text.characters.count > 0 {
|
||||
return ["H:|-16-[titleLabel]-16-[segmentedControl]-16-|"]
|
||||
} else {
|
||||
return ["H:|-16-[segmentedControl]-16-|"]
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
internal func valueChanged(_ sender: UISegmentedControl) {
|
||||
guard let options = rowDescriptor?.configuration.selection.options , !options.isEmpty else { return }
|
||||
let value = options[sender.selectedSegmentIndex]
|
||||
rowDescriptor?.value = value
|
||||
}
|
||||
|
||||
// MARK: Private
|
||||
|
||||
fileprivate func updateSegmentedControl() {
|
||||
segmentedControl.removeAllSegments()
|
||||
|
||||
guard let options = rowDescriptor?.configuration.selection.options , !options.isEmpty else { return }
|
||||
|
||||
var idx = 0
|
||||
for value in options {
|
||||
let title = rowDescriptor?.configuration.selection.optionTitleClosure?(value)
|
||||
segmentedControl.insertSegment(withTitle: title, at: idx, animated: false)
|
||||
idx += 1
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
//
|
||||
// FormSelectorCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 23/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormSelectorCell: FormValueCell {
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
|
||||
var title: String?
|
||||
if let multipleValues = rowDescriptor?.value as? [AnyObject] {
|
||||
var multipleValuesTitle = ""
|
||||
for (index, selectedValue) in multipleValues.enumerated() {
|
||||
guard let selectedValueTitle = rowDescriptor?.configuration.selection.optionTitleClosure?(selectedValue) else { continue }
|
||||
if index != 0 {
|
||||
multipleValuesTitle += ", "
|
||||
}
|
||||
multipleValuesTitle += selectedValueTitle
|
||||
}
|
||||
title = multipleValuesTitle
|
||||
} else if let singleValue = rowDescriptor?.value {
|
||||
title = rowDescriptor?.configuration.selection.optionTitleClosure?(singleValue)
|
||||
}
|
||||
|
||||
if let title = title , title.characters.count > 0 {
|
||||
valueLabel.text = title
|
||||
valueLabel.textColor = UIColor.black
|
||||
} else {
|
||||
valueLabel.text = rowDescriptor?.configuration.cell.placeholder
|
||||
valueLabel.textColor = UIColor.lightGray
|
||||
}
|
||||
}
|
||||
|
||||
open override class func formViewController(_ formViewController: FormViewController, didSelectRow selectedRow: FormBaseCell) {
|
||||
guard let row = selectedRow as? FormSelectorCell else { return }
|
||||
|
||||
formViewController.view.endEditing(true)
|
||||
|
||||
var selectorControllerClass: UIViewController.Type
|
||||
|
||||
if let controllerClass = row.rowDescriptor?.configuration.selection.controllerClass as? UIViewController.Type {
|
||||
selectorControllerClass = controllerClass
|
||||
} else { // fallback to default cell class
|
||||
selectorControllerClass = FormOptionsSelectorController.self
|
||||
}
|
||||
|
||||
let selectorController = selectorControllerClass.init()
|
||||
guard let formRowDescriptorViewController = selectorController as? FormSelector else { return }
|
||||
|
||||
formRowDescriptorViewController.formCell = row
|
||||
formViewController.navigationController?.pushViewController(selectorController, animated: true)
|
||||
}
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
//
|
||||
// FormSliderCell.swift
|
||||
// SwiftFormsApplication
|
||||
//
|
||||
// Created by Miguel Angel Ortuno Ortuno on 23/5/15.
|
||||
// Copyright (c) 2015 Miguel Angel Ortuno Ortuno. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormSliderCell: FormTitleCell {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let sliderView = UISlider()
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
selectionStyle = .none
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
sliderView.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(sliderView)
|
||||
|
||||
titleLabel.setContentHuggingPriority(500, for: .horizontal)
|
||||
|
||||
contentView.addConstraint(NSLayoutConstraint(item: sliderView, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
|
||||
sliderView.addTarget(self, action: #selector(FormSliderCell.valueChanged(_:)), for: .valueChanged)
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
if let maximumValue = rowDescriptor?.configuration.stepper.maximumValue { sliderView.maximumValue = Float(maximumValue) }
|
||||
if let minimumValue = rowDescriptor?.configuration.stepper.minimumValue { sliderView.minimumValue = Float(minimumValue) }
|
||||
if let continuous = rowDescriptor?.configuration.stepper.continuous { sliderView.isContinuous = continuous }
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
|
||||
if let value = rowDescriptor?.value as? Float {
|
||||
sliderView.value = value
|
||||
} else {
|
||||
sliderView.value = sliderView.minimumValue
|
||||
rowDescriptor?.value = sliderView.minimumValue as AnyObject
|
||||
}
|
||||
}
|
||||
|
||||
open override func constraintsViews() -> [String : UIView] {
|
||||
return ["titleLabel" : titleLabel, "sliderView" : sliderView]
|
||||
}
|
||||
|
||||
open override func defaultVisualConstraints() -> [String] {
|
||||
var constraints: [String] = []
|
||||
|
||||
constraints.append("V:|[titleLabel]|")
|
||||
constraints.append("H:|-16-[titleLabel]-16-[sliderView]-16-|")
|
||||
|
||||
return constraints
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
internal func valueChanged(_: UISlider) {
|
||||
rowDescriptor?.value = sliderView.value as AnyObject
|
||||
update()
|
||||
}
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
//
|
||||
// FormStepperCell.swift
|
||||
// SwiftFormsApplication
|
||||
//
|
||||
// Created by Miguel Angel Ortuno Ortuno on 23/5/15.
|
||||
// Copyright (c) 2015 Miguel Angel Ortuno Ortuno. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormStepperCell: FormTitleCell {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let stepperView = UIStepper()
|
||||
open let countLabel = UILabel()
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
selectionStyle = .none
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
stepperView.translatesAutoresizingMaskIntoConstraints = false
|
||||
countLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
countLabel.textAlignment = .right
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(countLabel)
|
||||
contentView.addSubview(stepperView)
|
||||
|
||||
titleLabel.setContentHuggingPriority(500, for: .horizontal)
|
||||
|
||||
contentView.addConstraint(NSLayoutConstraint(item: stepperView, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
|
||||
stepperView.addTarget(self, action: #selector(FormStepperCell.valueChanged(_:)), for: .valueChanged)
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
if let maximumValue = rowDescriptor?.configuration.stepper.maximumValue { stepperView.maximumValue = maximumValue }
|
||||
if let minimumValue = rowDescriptor?.configuration.stepper.minimumValue { stepperView.minimumValue = minimumValue }
|
||||
if let steps = rowDescriptor?.configuration.stepper.steps { stepperView.stepValue = steps }
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
|
||||
if let value = rowDescriptor?.value as? Double {
|
||||
stepperView.value = value
|
||||
countLabel.text = String(value)
|
||||
} else {
|
||||
stepperView.value = stepperView.minimumValue
|
||||
rowDescriptor?.value = stepperView.minimumValue as AnyObject
|
||||
countLabel.text = String(stepperView.minimumValue)
|
||||
}
|
||||
}
|
||||
|
||||
open override func constraintsViews() -> [String : UIView] {
|
||||
return ["titleLabel" : titleLabel, "countLabel" : countLabel, "stepperView" : stepperView]
|
||||
}
|
||||
|
||||
open override func defaultVisualConstraints() -> [String] {
|
||||
var constraints: [String] = []
|
||||
|
||||
constraints.append("V:|[titleLabel]|")
|
||||
constraints.append("V:|[countLabel]|")
|
||||
|
||||
constraints.append("H:|-16-[titleLabel][countLabel]-[stepperView]-16-|")
|
||||
return constraints
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
internal func valueChanged(_: UISwitch) {
|
||||
rowDescriptor?.value = stepperView.value as AnyObject
|
||||
update()
|
||||
}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
//
|
||||
// FormSwitchCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 21/08/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormSwitchCell: FormTitleCell {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let switchView = UISwitch()
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
selectionStyle = .none
|
||||
|
||||
switchView.addTarget(self, action: #selector(FormSwitchCell.valueChanged(_:)), for: .valueChanged)
|
||||
accessoryView = switchView
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
|
||||
if let value = rowDescriptor?.value as? Bool {
|
||||
switchView.isOn = value
|
||||
} else {
|
||||
switchView.isOn = false
|
||||
rowDescriptor?.value = false as AnyObject
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
internal func valueChanged(_: UISwitch) {
|
||||
rowDescriptor?.value = switchView.isOn as AnyObject
|
||||
update()
|
||||
}
|
||||
}
|
||||
@@ -1,148 +0,0 @@
|
||||
//
|
||||
// FormTextFieldCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 20/08/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormTextFieldCell: FormBaseCell {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let titleLabel = UILabel()
|
||||
open let textField = UITextField()
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
fileprivate var customConstraints: [AnyObject] = []
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
selectionStyle = .none
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
textField.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
textField.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(textField)
|
||||
|
||||
titleLabel.setContentHuggingPriority(500, for: .horizontal)
|
||||
titleLabel.setContentCompressionResistancePriority(1000, for: .horizontal)
|
||||
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: textField, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: textField, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
|
||||
textField.addTarget(self, action: #selector(FormTextFieldCell.editingChanged(_:)), for: .editingChanged)
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
super.update()
|
||||
|
||||
if let showsInputToolbar = rowDescriptor?.configuration.cell.showsInputToolbar , showsInputToolbar && textField.inputAccessoryView == nil {
|
||||
textField.inputAccessoryView = inputAccesoryView()
|
||||
}
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
textField.text = rowDescriptor?.value as? String
|
||||
textField.placeholder = rowDescriptor?.configuration.cell.placeholder
|
||||
|
||||
textField.isSecureTextEntry = false
|
||||
textField.clearButtonMode = .whileEditing
|
||||
|
||||
if let type = rowDescriptor?.type {
|
||||
switch type {
|
||||
case .text:
|
||||
textField.autocorrectionType = .default
|
||||
textField.autocapitalizationType = .sentences
|
||||
textField.keyboardType = .default
|
||||
case .number:
|
||||
textField.keyboardType = .numberPad
|
||||
case .numbersAndPunctuation:
|
||||
textField.keyboardType = .numbersAndPunctuation
|
||||
case .decimal:
|
||||
textField.keyboardType = .decimalPad
|
||||
case .name:
|
||||
textField.autocorrectionType = .no
|
||||
textField.autocapitalizationType = .words
|
||||
textField.keyboardType = .default
|
||||
case .phone:
|
||||
textField.keyboardType = .phonePad
|
||||
case .namePhone:
|
||||
textField.autocorrectionType = .no
|
||||
textField.autocapitalizationType = .words
|
||||
textField.keyboardType = .namePhonePad
|
||||
case .url:
|
||||
textField.autocorrectionType = .no
|
||||
textField.autocapitalizationType = .none
|
||||
textField.keyboardType = .URL
|
||||
case .twitter:
|
||||
textField.autocorrectionType = .no
|
||||
textField.autocapitalizationType = .none
|
||||
textField.keyboardType = .twitter
|
||||
case .email:
|
||||
textField.autocorrectionType = .no
|
||||
textField.autocapitalizationType = .none
|
||||
textField.keyboardType = .emailAddress
|
||||
case .asciiCapable:
|
||||
textField.autocorrectionType = .no
|
||||
textField.autocapitalizationType = .none
|
||||
textField.keyboardType = .asciiCapable
|
||||
case .password:
|
||||
textField.isSecureTextEntry = true
|
||||
textField.clearsOnBeginEditing = false
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open override func constraintsViews() -> [String : UIView] {
|
||||
var views = ["titleLabel" : titleLabel, "textField" : textField]
|
||||
if self.imageView!.image != nil {
|
||||
views["imageView"] = imageView
|
||||
}
|
||||
return views
|
||||
}
|
||||
|
||||
open override func defaultVisualConstraints() -> [String] {
|
||||
if self.imageView!.image != nil {
|
||||
if titleLabel.text != nil && (titleLabel.text!).characters.count > 0 {
|
||||
return ["H:[imageView]-[titleLabel]-[textField]-16-|"]
|
||||
} else {
|
||||
return ["H:[imageView]-[textField]-16-|"]
|
||||
}
|
||||
} else {
|
||||
if titleLabel.text != nil && (titleLabel.text!).characters.count > 0 {
|
||||
return ["H:|-16-[titleLabel]-[textField]-16-|"]
|
||||
} else {
|
||||
return ["H:|-16-[textField]-16-|"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open override func firstResponderElement() -> UIResponder? {
|
||||
return textField
|
||||
}
|
||||
|
||||
open override class func formRowCanBecomeFirstResponder() -> Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
internal func editingChanged(_ sender: UITextField) {
|
||||
guard let text = sender.text, text.characters.count > 0 else { rowDescriptor?.value = nil; update(); return }
|
||||
rowDescriptor?.value = text as AnyObject
|
||||
}
|
||||
}
|
||||
@@ -1,96 +0,0 @@
|
||||
//
|
||||
// FormTextViewCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Joey Padot on 12/6/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormTextViewCell : FormBaseCell, UITextViewDelegate {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let titleLabel = UILabel()
|
||||
open let textField = UITextView()
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
fileprivate var customConstraints: [AnyObject]!
|
||||
|
||||
// MARK: Class Funcs
|
||||
|
||||
open override class func formRowCellHeight() -> CGFloat {
|
||||
return 110.0
|
||||
}
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
selectionStyle = .none
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
textField.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
textField.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(textField)
|
||||
|
||||
titleLabel.setContentHuggingPriority(500, for: .horizontal)
|
||||
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: textField, attribute: .top, relatedBy: .equal, toItem: contentView, attribute: .top, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: textField, attribute: .bottom, relatedBy: .equal, toItem: contentView, attribute: .bottom, multiplier: 1.0, constant: 0.0))
|
||||
|
||||
textField.delegate = self
|
||||
}
|
||||
|
||||
open override func update() {
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
textField.text = rowDescriptor?.value as? String
|
||||
|
||||
textField.isSecureTextEntry = false
|
||||
textField.autocorrectionType = .default
|
||||
textField.autocapitalizationType = .sentences
|
||||
textField.keyboardType = .default
|
||||
}
|
||||
|
||||
open override func constraintsViews() -> [String : UIView] {
|
||||
var views = ["titleLabel" : titleLabel, "textField" : textField]
|
||||
if self.imageView!.image != nil {
|
||||
views["imageView"] = imageView
|
||||
}
|
||||
return views
|
||||
}
|
||||
|
||||
open override func defaultVisualConstraints() -> [String] {
|
||||
if self.imageView!.image != nil {
|
||||
if let text = titleLabel.text , text.characters.count > 0 {
|
||||
return ["H:[imageView]-[titleLabel]-[textField]-16-|"]
|
||||
} else {
|
||||
return ["H:[imageView]-[textField]-16-|"]
|
||||
}
|
||||
} else {
|
||||
if let text = titleLabel.text , text.characters.count > 0 {
|
||||
return ["H:|-16-[titleLabel]-[textField]-16-|"]
|
||||
} else {
|
||||
return ["H:|-16-[textField]-16-|"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: UITextViewDelegate
|
||||
|
||||
open func textViewDidChange(_ textView: UITextView) {
|
||||
guard let text = textView.text , text.characters.count > 0 else { rowDescriptor?.value = nil; update(); return }
|
||||
rowDescriptor?.value = text as AnyObject
|
||||
update()
|
||||
}
|
||||
}
|
||||
@@ -1,119 +0,0 @@
|
||||
//
|
||||
// FormBaseCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 20/08/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormBaseCell: UITableViewCell {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
open var rowDescriptor: FormRowDescriptor? {
|
||||
didSet {
|
||||
self.update()
|
||||
}
|
||||
}
|
||||
|
||||
open weak var formViewController: FormViewController?
|
||||
|
||||
fileprivate var customConstraints: [NSLayoutConstraint] = []
|
||||
|
||||
// MARK: Init
|
||||
|
||||
public required override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
|
||||
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
||||
}
|
||||
|
||||
public required init?(coder aDecoder: NSCoder) {
|
||||
super.init(coder: aDecoder)
|
||||
}
|
||||
|
||||
// MARK: Public interface
|
||||
|
||||
open func configure() {
|
||||
/// override
|
||||
}
|
||||
|
||||
open func update() {
|
||||
/// override
|
||||
}
|
||||
|
||||
open func defaultVisualConstraints() -> [String] {
|
||||
/// override
|
||||
return []
|
||||
}
|
||||
|
||||
open func constraintsViews() -> [String : UIView] {
|
||||
/// override
|
||||
return [:]
|
||||
}
|
||||
|
||||
open func firstResponderElement() -> UIResponder? {
|
||||
/// override
|
||||
return nil
|
||||
}
|
||||
|
||||
open func inputAccesoryView() -> UIToolbar {
|
||||
|
||||
let actionBar = UIToolbar()
|
||||
actionBar.isTranslucent = true
|
||||
actionBar.sizeToFit()
|
||||
actionBar.barStyle = .default
|
||||
|
||||
let doneButton = UIBarButtonItem(title: NSLocalizedString("Done", comment: ""), style: .done, target: self, action: #selector(FormBaseCell.handleDoneAction(_:)))
|
||||
|
||||
let flexible = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
|
||||
actionBar.items = [flexible, doneButton]
|
||||
|
||||
return actionBar
|
||||
}
|
||||
|
||||
internal func handleDoneAction(_: UIBarButtonItem) {
|
||||
firstResponderElement()?.resignFirstResponder()
|
||||
}
|
||||
|
||||
open class func formRowCellHeight() -> CGFloat {
|
||||
return 44.0
|
||||
}
|
||||
|
||||
open class func formRowCanBecomeFirstResponder() -> Bool {
|
||||
return false
|
||||
}
|
||||
|
||||
open class func formViewController(_ formViewController: FormViewController, didSelectRow: FormBaseCell) {
|
||||
}
|
||||
|
||||
// MARK: Constraints
|
||||
|
||||
open override func updateConstraints() {
|
||||
if customConstraints.count > 0 {
|
||||
contentView.removeConstraints(customConstraints)
|
||||
}
|
||||
|
||||
let views = constraintsViews()
|
||||
|
||||
customConstraints.removeAll()
|
||||
|
||||
var visualConstraints = [String]()
|
||||
|
||||
if let visualConstraintsClosure = rowDescriptor?.configuration.cell.visualConstraintsClosure {
|
||||
visualConstraints = visualConstraintsClosure(self)
|
||||
} else {
|
||||
visualConstraints = defaultVisualConstraints()
|
||||
}
|
||||
|
||||
for visualConstraint in visualConstraints {
|
||||
let constraints = NSLayoutConstraint.constraints(withVisualFormat: visualConstraint, options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views)
|
||||
for constraint in constraints {
|
||||
customConstraints.append(constraint)
|
||||
}
|
||||
}
|
||||
|
||||
contentView.addConstraints(customConstraints)
|
||||
super.updateConstraints()
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
//
|
||||
// FormTitleCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 13/11/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormTitleCell: FormBaseCell {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let titleLabel = UILabel()
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
|
||||
// apply constant constraints
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
}
|
||||
|
||||
open override func constraintsViews() -> [String : UIView] {
|
||||
return ["titleLabel" : titleLabel]
|
||||
}
|
||||
|
||||
open override func defaultVisualConstraints() -> [String] {
|
||||
return ["H:|-16-[titleLabel]-16-|"]
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
//
|
||||
// FormValueCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 13/11/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormValueCell: FormBaseCell {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
open let titleLabel = UILabel()
|
||||
open let valueLabel = UILabel()
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
fileprivate var customConstraints: [AnyObject]!
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
accessoryType = .disclosureIndicator
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
valueLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
valueLabel.font = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body)
|
||||
|
||||
valueLabel.textColor = UIColor.lightGray
|
||||
valueLabel.textAlignment = .right
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(valueLabel)
|
||||
|
||||
titleLabel.setContentHuggingPriority(500, for: .horizontal)
|
||||
titleLabel.setContentCompressionResistancePriority(1000, for: .horizontal)
|
||||
|
||||
// apply constant constraints
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: valueLabel, attribute: .height, relatedBy: .equal, toItem: contentView, attribute: .height, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
contentView.addConstraint(NSLayoutConstraint(item: valueLabel, attribute: .centerY, relatedBy: .equal, toItem: contentView, attribute: .centerY, multiplier: 1.0, constant: 0.0))
|
||||
}
|
||||
|
||||
open override func constraintsViews() -> [String : UIView] {
|
||||
return ["titleLabel" : titleLabel, "valueLabel" : valueLabel]
|
||||
}
|
||||
|
||||
open override func defaultVisualConstraints() -> [String] {
|
||||
|
||||
// apply default constraints
|
||||
var rightPadding = 0
|
||||
if accessoryType == .none {
|
||||
rightPadding = 16
|
||||
}
|
||||
|
||||
if titleLabel.text != nil && (titleLabel.text!).characters.count > 0 {
|
||||
return ["H:|-16-[titleLabel]-[valueLabel]-\(rightPadding)-|"]
|
||||
}
|
||||
else {
|
||||
return ["H:|-16-[valueLabel]-\(rightPadding)-|"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,125 +0,0 @@
|
||||
//
|
||||
// FormOptionsSelectorController.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 23/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormOptionsSelectorController: UITableViewController, FormSelector {
|
||||
|
||||
// MARK: FormSelector
|
||||
|
||||
open var formCell: FormBaseCell?
|
||||
|
||||
// MARK: Init
|
||||
|
||||
public init() {
|
||||
super.init(style: .grouped)
|
||||
}
|
||||
|
||||
public required init(coder aDecoder: NSCoder) {
|
||||
super.init(coder: aDecoder)!
|
||||
}
|
||||
|
||||
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
|
||||
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
|
||||
}
|
||||
|
||||
open override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
self.navigationItem.title = formCell?.rowDescriptor?.title
|
||||
}
|
||||
|
||||
// MARK: UITableViewDataSource
|
||||
|
||||
open override func numberOfSections(in tableView: UITableView) -> Int {
|
||||
return 1
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
guard let options = formCell?.rowDescriptor?.configuration.selection.options , !options.isEmpty else { return 0 }
|
||||
return options.count
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
|
||||
return 0.1
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||
|
||||
let reuseIdentifier = NSStringFromClass(type(of: self))
|
||||
|
||||
var cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier)
|
||||
if cell == nil {
|
||||
cell = UITableViewCell(style: .default, reuseIdentifier: reuseIdentifier)
|
||||
}
|
||||
|
||||
let options = formCell!.rowDescriptor!.configuration.selection.options
|
||||
let optionValue = options[(indexPath as NSIndexPath).row]
|
||||
|
||||
cell?.textLabel?.text = formCell?.rowDescriptor?.configuration.selection.optionTitleClosure?(optionValue)
|
||||
|
||||
if let selectedOptions = formCell?.rowDescriptor?.value as? [AnyObject] {
|
||||
if let _ = selectedOptions.index(where: { $0 === optionValue }) {
|
||||
cell?.accessoryType = .checkmark
|
||||
} else {
|
||||
cell?.accessoryType = .none
|
||||
}
|
||||
|
||||
} else if let selectedOption = formCell?.rowDescriptor?.value {
|
||||
if optionValue === selectedOption {
|
||||
cell?.accessoryType = .checkmark
|
||||
} else {
|
||||
cell?.accessoryType = .none
|
||||
}
|
||||
}
|
||||
|
||||
return cell!
|
||||
}
|
||||
|
||||
// MARK: UITableViewDelegate
|
||||
|
||||
open override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||
|
||||
let cell = tableView.cellForRow(at: indexPath)
|
||||
|
||||
var allowsMultipleSelection = false
|
||||
if let allowsMultipleSelectionValue = formCell?.rowDescriptor?.configuration.selection.allowsMultipleSelection {
|
||||
allowsMultipleSelection = allowsMultipleSelectionValue
|
||||
}
|
||||
|
||||
let options = formCell!.rowDescriptor!.configuration.selection.options
|
||||
let selectedOption = options[(indexPath as NSIndexPath).row]
|
||||
|
||||
if allowsMultipleSelection {
|
||||
if var selectedOptions = formCell?.rowDescriptor?.value as? [AnyObject] {
|
||||
if let index = selectedOptions.index(where: { $0 === selectedOption }) {
|
||||
selectedOptions.remove(at: index)
|
||||
cell?.accessoryType = .none
|
||||
} else {
|
||||
selectedOptions.append(selectedOption)
|
||||
cell?.accessoryType = .checkmark
|
||||
}
|
||||
formCell?.rowDescriptor?.value = selectedOptions as AnyObject
|
||||
|
||||
} else {
|
||||
formCell?.rowDescriptor?.value = [AnyObject](arrayLiteral: selectedOption) as AnyObject
|
||||
cell?.accessoryType = .checkmark
|
||||
}
|
||||
|
||||
} else {
|
||||
formCell?.rowDescriptor?.value = selectedOption
|
||||
}
|
||||
|
||||
formCell?.update()
|
||||
|
||||
if allowsMultipleSelection {
|
||||
tableView.deselectRow(at: indexPath, animated: true)
|
||||
} else {
|
||||
let _ = self.navigationController?.popViewController(animated: true)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
//
|
||||
// FormSelector.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 23/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
@objc public protocol FormSelector: NSObjectProtocol {
|
||||
var formCell: FormBaseCell? { get set }
|
||||
}
|
||||
@@ -1,225 +0,0 @@
|
||||
//
|
||||
// FormViewController.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuño on 20/08/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
open class FormViewController : UITableViewController {
|
||||
|
||||
private static var __once: () = {
|
||||
FormViewController.defaultCellClasses[.text] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.label] = FormLabelCell.self
|
||||
FormViewController.defaultCellClasses[.number] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.numbersAndPunctuation] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.decimal] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.name] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.phone] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.url] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.twitter] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.namePhone] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.email] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.asciiCapable] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.password] = FormTextFieldCell.self
|
||||
FormViewController.defaultCellClasses[.button] = FormButtonCell.self
|
||||
FormViewController.defaultCellClasses[.booleanSwitch] = FormSwitchCell.self
|
||||
FormViewController.defaultCellClasses[.booleanCheck] = FormCheckCell.self
|
||||
FormViewController.defaultCellClasses[.segmentedControl] = FormSegmentedControlCell.self
|
||||
FormViewController.defaultCellClasses[.picker] = FormPickerCell.self
|
||||
FormViewController.defaultCellClasses[.date] = FormDateCell.self
|
||||
FormViewController.defaultCellClasses[.time] = FormDateCell.self
|
||||
FormViewController.defaultCellClasses[.dateAndTime] = FormDateCell.self
|
||||
FormViewController.defaultCellClasses[.stepper] = FormStepperCell.self
|
||||
FormViewController.defaultCellClasses[.slider] = FormSliderCell.self
|
||||
FormViewController.defaultCellClasses[.multipleSelector] = FormSelectorCell.self
|
||||
FormViewController.defaultCellClasses[.multilineText] = FormTextViewCell.self
|
||||
}()
|
||||
|
||||
// MARK: Class variables
|
||||
|
||||
fileprivate static var onceDefaultCellClass: Int = 0
|
||||
fileprivate static var defaultCellClasses: [FormRowDescriptor.RowType : FormBaseCell.Type] = [:]
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
open var form = FormDescriptor()
|
||||
|
||||
// MARK: Init
|
||||
|
||||
public convenience init() {
|
||||
self.init(style: .grouped)
|
||||
}
|
||||
|
||||
public convenience init(form: FormDescriptor) {
|
||||
self.init(style: .grouped)
|
||||
self.form = form
|
||||
}
|
||||
|
||||
public override init(style: UITableViewStyle) {
|
||||
super.init(style: style)
|
||||
}
|
||||
|
||||
public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
|
||||
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
|
||||
}
|
||||
|
||||
public required init(coder aDecoder: NSCoder) {
|
||||
super.init(coder: aDecoder)!
|
||||
}
|
||||
|
||||
// MARK: View life cycle
|
||||
|
||||
open override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
navigationItem.title = form.title
|
||||
}
|
||||
|
||||
// MARK: Public interface
|
||||
|
||||
open func valueForTag(_ tag: String) -> AnyObject? {
|
||||
for section in form.sections {
|
||||
for row in section.rows {
|
||||
if row.tag == tag {
|
||||
return row.value
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
open func setValue(_ value: AnyObject, forTag tag: String) {
|
||||
for (sectionIndex, section) in form.sections.enumerated() {
|
||||
for (rowIndex, row) in section.rows.enumerated() {
|
||||
if row.tag == tag {
|
||||
form.sections[sectionIndex].rows[rowIndex].value = value
|
||||
if let cell = self.tableView.cellForRow(at: IndexPath(row: rowIndex, section: sectionIndex)) as? FormBaseCell {
|
||||
cell.update()
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: UITableViewDataSource
|
||||
|
||||
open override func numberOfSections(in tableView: UITableView) -> Int {
|
||||
return form.sections.count
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
return form.sections[section].rows.count
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||
|
||||
let rowDescriptor = formRowDescriptorAtIndexPath(indexPath)
|
||||
|
||||
let formBaseCellClass = formBaseCellClassFromRowDescriptor(rowDescriptor)
|
||||
|
||||
let reuseIdentifier = NSStringFromClass(formBaseCellClass!)
|
||||
|
||||
var cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier) as? FormBaseCell
|
||||
if cell == nil {
|
||||
cell = formBaseCellClass?.init(style: .default, reuseIdentifier: reuseIdentifier)
|
||||
cell?.formViewController = self
|
||||
cell?.configure()
|
||||
}
|
||||
|
||||
cell?.rowDescriptor = rowDescriptor
|
||||
|
||||
// apply cell custom design
|
||||
for (keyPath, value) in rowDescriptor.configuration.cell.appearance {
|
||||
cell?.setValue(value, forKeyPath: keyPath)
|
||||
}
|
||||
return cell!
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
|
||||
return form.sections[section].headerTitle
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {
|
||||
return form.sections[section].footerTitle
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
|
||||
guard let headerView = form.sections[section].headerView else { return nil }
|
||||
return headerView
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
|
||||
guard let footerView = form.sections[section].footerView else { return nil }
|
||||
return footerView
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
|
||||
guard let headerView = form.sections[section].headerView , headerView.translatesAutoresizingMaskIntoConstraints else {
|
||||
return form.sections[section].headerViewHeight
|
||||
}
|
||||
return headerView.frame.size.height
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
|
||||
guard let footerView = form.sections[section].footerView , footerView.translatesAutoresizingMaskIntoConstraints else {
|
||||
return form.sections[section].footerViewHeight
|
||||
}
|
||||
return footerView.frame.size.height
|
||||
}
|
||||
|
||||
// MARK: UITableViewDelegate
|
||||
|
||||
open override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
||||
|
||||
let rowDescriptor = formRowDescriptorAtIndexPath(indexPath)
|
||||
|
||||
if let formBaseCellClass = formBaseCellClassFromRowDescriptor(rowDescriptor) {
|
||||
return formBaseCellClass.formRowCellHeight()
|
||||
}
|
||||
return super.tableView(tableView, heightForRowAt: indexPath)
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||
|
||||
let rowDescriptor = formRowDescriptorAtIndexPath(indexPath)
|
||||
|
||||
if let selectedRow = tableView.cellForRow(at: indexPath) as? FormBaseCell {
|
||||
if let formBaseCellClass = formBaseCellClassFromRowDescriptor(rowDescriptor) {
|
||||
formBaseCellClass.formViewController(self, didSelectRow: selectedRow)
|
||||
}
|
||||
}
|
||||
|
||||
if let didSelectClosure = rowDescriptor.configuration.button.didSelectClosure {
|
||||
didSelectClosure(rowDescriptor)
|
||||
}
|
||||
|
||||
tableView.deselectRow(at: indexPath, animated: true)
|
||||
}
|
||||
|
||||
fileprivate class func defaultCellClassForRowType(_ rowType: FormRowDescriptor.RowType) -> FormBaseCell.Type {
|
||||
_ = FormViewController.__once
|
||||
return FormViewController.defaultCellClasses[rowType]!
|
||||
}
|
||||
|
||||
fileprivate func formRowDescriptorAtIndexPath(_ indexPath: IndexPath) -> FormRowDescriptor {
|
||||
|
||||
let section = form.sections[(indexPath as NSIndexPath).section]
|
||||
let rowDescriptor = section.rows[(indexPath as NSIndexPath).row]
|
||||
return rowDescriptor
|
||||
}
|
||||
|
||||
fileprivate func formBaseCellClassFromRowDescriptor(_ rowDescriptor: FormRowDescriptor) -> FormBaseCell.Type! {
|
||||
|
||||
var formBaseCellClass: FormBaseCell.Type
|
||||
|
||||
if let cellClass = rowDescriptor.configuration.cell.cellClass as? FormBaseCell.Type {
|
||||
formBaseCellClass = cellClass
|
||||
} else {
|
||||
formBaseCellClass = FormViewController.defaultCellClassForRowType(rowDescriptor.type)
|
||||
}
|
||||
return formBaseCellClass
|
||||
}
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
//
|
||||
// FormDescriptor.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 20/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
public final class FormDescriptor {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
public var title: String
|
||||
public var sections: [FormSectionDescriptor] = []
|
||||
|
||||
// MARK: Init
|
||||
|
||||
public init() {
|
||||
self.title = ""
|
||||
}
|
||||
|
||||
public init(title: String) {
|
||||
self.title = title
|
||||
}
|
||||
|
||||
// MARK: Public
|
||||
|
||||
public func formValues() -> [String : AnyObject] {
|
||||
|
||||
var formValues: [String : AnyObject] = [:]
|
||||
|
||||
for section in sections {
|
||||
for row in section.rows {
|
||||
if row.type != .button {
|
||||
if let value = row.value {
|
||||
formValues[row.tag] = value
|
||||
} else {
|
||||
formValues[row.tag] = NSNull()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return formValues
|
||||
}
|
||||
|
||||
public func validateForm() -> FormRowDescriptor? {
|
||||
for section in sections {
|
||||
for row in section.rows {
|
||||
if row.configuration.cell.required && row.value == nil {
|
||||
return row
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
@@ -1,159 +0,0 @@
|
||||
//
|
||||
// FormRowDescriptor.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Ángel Ortuño Ortuño on 23/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
public final class FormRowDescriptor {
|
||||
|
||||
// MARK: Types
|
||||
|
||||
public enum RowType {
|
||||
case unknown
|
||||
case label
|
||||
case text
|
||||
case url
|
||||
case number
|
||||
case numbersAndPunctuation
|
||||
case decimal
|
||||
case name
|
||||
case phone
|
||||
case namePhone
|
||||
case email
|
||||
case twitter
|
||||
case asciiCapable
|
||||
case password
|
||||
case button
|
||||
case booleanSwitch
|
||||
case booleanCheck
|
||||
case segmentedControl
|
||||
case picker
|
||||
case date
|
||||
case time
|
||||
case dateAndTime
|
||||
case stepper
|
||||
case slider
|
||||
case multipleSelector
|
||||
case multilineText
|
||||
}
|
||||
|
||||
public struct CellConfiguration {
|
||||
public var cellClass: AnyClass?
|
||||
public var appearance: [String : AnyObject]
|
||||
public var placeholder: String?
|
||||
public var showsInputToolbar: Bool
|
||||
public var required: Bool
|
||||
public var willUpdateClosure: ((FormRowDescriptor) -> Void)?
|
||||
public var didUpdateClosure: ((FormRowDescriptor) -> Void)?
|
||||
public var visualConstraintsClosure: ((FormBaseCell) -> [String])?
|
||||
|
||||
public init() {
|
||||
cellClass = nil
|
||||
appearance = [:]
|
||||
placeholder = nil
|
||||
showsInputToolbar = false
|
||||
required = true
|
||||
willUpdateClosure = nil
|
||||
didUpdateClosure = nil
|
||||
visualConstraintsClosure = nil
|
||||
}
|
||||
}
|
||||
|
||||
public struct SelectionConfiguration {
|
||||
public var controllerClass: AnyClass?
|
||||
public var options: [AnyObject]
|
||||
public var optionTitleClosure: ((AnyObject) -> String)?
|
||||
public var allowsMultipleSelection: Bool
|
||||
|
||||
public init() {
|
||||
controllerClass = nil
|
||||
options = []
|
||||
optionTitleClosure = nil
|
||||
allowsMultipleSelection = false
|
||||
}
|
||||
}
|
||||
|
||||
public struct ButtonConfiguration {
|
||||
public var didSelectClosure: ((FormRowDescriptor) -> Void)?
|
||||
|
||||
public init() {
|
||||
didSelectClosure = nil
|
||||
}
|
||||
}
|
||||
|
||||
public struct StepperConfiguration {
|
||||
public var maximumValue: Double
|
||||
public var minimumValue: Double
|
||||
public var steps: Double
|
||||
public var continuous: Bool
|
||||
|
||||
public init() {
|
||||
maximumValue = 0.0
|
||||
minimumValue = 0.0
|
||||
steps = 0.0
|
||||
continuous = false
|
||||
}
|
||||
}
|
||||
|
||||
public struct DateConfiguration {
|
||||
public var dateFormatter: DateFormatter?
|
||||
}
|
||||
|
||||
public struct RowConfiguration {
|
||||
public var cell: CellConfiguration
|
||||
public var selection: SelectionConfiguration
|
||||
public var button: ButtonConfiguration
|
||||
public var stepper: StepperConfiguration
|
||||
public var date: DateConfiguration
|
||||
public var userInfo: [String : AnyObject]
|
||||
|
||||
init() {
|
||||
cell = CellConfiguration()
|
||||
selection = SelectionConfiguration()
|
||||
button = ButtonConfiguration()
|
||||
stepper = StepperConfiguration()
|
||||
date = DateConfiguration()
|
||||
userInfo = [:]
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
public let tag: String
|
||||
public let type: RowType
|
||||
|
||||
public var title: String?
|
||||
|
||||
public var value: AnyObject? {
|
||||
willSet {
|
||||
guard let willUpdateBlock = configuration.cell.willUpdateClosure else { return }
|
||||
willUpdateBlock(self)
|
||||
}
|
||||
didSet {
|
||||
guard let didUpdateBlock = configuration.cell.didUpdateClosure else { return }
|
||||
didUpdateBlock(self)
|
||||
}
|
||||
}
|
||||
|
||||
public var configuration: RowConfiguration
|
||||
|
||||
// MARK: Init
|
||||
|
||||
public init(tag: String, type: RowType, title: String, configuration: RowConfiguration) {
|
||||
self.tag = tag
|
||||
self.type = type
|
||||
self.title = title
|
||||
self.configuration = configuration
|
||||
}
|
||||
|
||||
public init(tag: String, type: RowType, title: String) {
|
||||
self.tag = tag
|
||||
self.type = type
|
||||
self.title = title
|
||||
self.configuration = RowConfiguration()
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
//
|
||||
// FormSectionDescriptor.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 20/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
public final class FormSectionDescriptor {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
public var rows: [FormRowDescriptor] = []
|
||||
|
||||
public var headerTitle: String?
|
||||
public var footerTitle: String?
|
||||
|
||||
public var headerView: UIView?
|
||||
public var footerView: UIView?
|
||||
|
||||
public var headerViewHeight: CGFloat = UITableViewAutomaticDimension
|
||||
public var footerViewHeight: CGFloat = UITableViewAutomaticDimension
|
||||
|
||||
// MARK: Init
|
||||
|
||||
public init(headerTitle: String?, footerTitle: String?) {
|
||||
self.headerTitle = headerTitle
|
||||
self.footerTitle = footerTitle
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,28 +0,0 @@
|
||||
# Acknowledgements
|
||||
This application makes use of the following third party libraries:
|
||||
|
||||
## SwiftForms
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Xmartlabs ( http://xmartlabs.com )
|
||||
Copyright (c) 2014 Miguel Ángel Ortuño ( ortuman@gmail.com )
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Generated by CocoaPods - https://cocoapods.org
|
||||
@@ -1,60 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>PreferenceSpecifiers</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>This application makes use of the following third party libraries:</string>
|
||||
<key>Title</key>
|
||||
<string>Acknowledgements</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Xmartlabs ( http://xmartlabs.com )
|
||||
Copyright (c) 2014 Miguel Ángel Ortuño ( ortuman@gmail.com )
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
</string>
|
||||
<key>License</key>
|
||||
<string>MIT</string>
|
||||
<key>Title</key>
|
||||
<string>SwiftForms</string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Generated by CocoaPods - https://cocoapods.org</string>
|
||||
<key>Title</key>
|
||||
<string></string>
|
||||
<key>Type</key>
|
||||
<string>PSGroupSpecifier</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>StringsTable</key>
|
||||
<string>Acknowledgements</string>
|
||||
<key>Title</key>
|
||||
<string>Acknowledgements</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,5 +0,0 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
@interface PodsDummy_Pods_My_Mind : NSObject
|
||||
@end
|
||||
@implementation PodsDummy_Pods_My_Mind
|
||||
@end
|
||||
@@ -1,99 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
|
||||
SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
|
||||
|
||||
install_framework()
|
||||
{
|
||||
if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
|
||||
local source="${BUILT_PRODUCTS_DIR}/$1"
|
||||
elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
|
||||
local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
|
||||
elif [ -r "$1" ]; then
|
||||
local source="$1"
|
||||
fi
|
||||
|
||||
local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
|
||||
if [ -L "${source}" ]; then
|
||||
echo "Symlinked..."
|
||||
source="$(readlink "${source}")"
|
||||
fi
|
||||
|
||||
# use filter instead of exclude so missing patterns dont' throw errors
|
||||
echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
|
||||
rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
|
||||
|
||||
local basename
|
||||
basename="$(basename -s .framework "$1")"
|
||||
binary="${destination}/${basename}.framework/${basename}"
|
||||
if ! [ -r "$binary" ]; then
|
||||
binary="${destination}/${basename}"
|
||||
fi
|
||||
|
||||
# Strip invalid architectures so "fat" simulator / device frameworks work on device
|
||||
if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
|
||||
strip_invalid_archs "$binary"
|
||||
fi
|
||||
|
||||
# Resign the code if required by the build settings to avoid unstable apps
|
||||
code_sign_if_enabled "${destination}/$(basename "$1")"
|
||||
|
||||
# Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
|
||||
if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
|
||||
local swift_runtime_libs
|
||||
swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
|
||||
for lib in $swift_runtime_libs; do
|
||||
echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
|
||||
rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
|
||||
code_sign_if_enabled "${destination}/${lib}"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
# Signs a framework with the provided identity
|
||||
code_sign_if_enabled() {
|
||||
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
|
||||
# Use the current code_sign_identitiy
|
||||
echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
|
||||
local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'"
|
||||
|
||||
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
||||
code_sign_cmd="$code_sign_cmd &"
|
||||
fi
|
||||
echo "$code_sign_cmd"
|
||||
eval "$code_sign_cmd"
|
||||
fi
|
||||
}
|
||||
|
||||
# Strip invalid architectures
|
||||
strip_invalid_archs() {
|
||||
binary="$1"
|
||||
# Get architectures for current file
|
||||
archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)"
|
||||
stripped=""
|
||||
for arch in $archs; do
|
||||
if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then
|
||||
# Strip non-valid architectures in-place
|
||||
lipo -remove "$arch" -output "$binary" "$binary" || exit 1
|
||||
stripped="$stripped $arch"
|
||||
fi
|
||||
done
|
||||
if [[ "$stripped" ]]; then
|
||||
echo "Stripped $binary of architectures:$stripped"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
if [[ "$CONFIGURATION" == "Debug" ]]; then
|
||||
install_framework "$BUILT_PRODUCTS_DIR/SwiftForms/SwiftForms.framework"
|
||||
fi
|
||||
if [[ "$CONFIGURATION" == "Release" ]]; then
|
||||
install_framework "$BUILT_PRODUCTS_DIR/SwiftForms/SwiftForms.framework"
|
||||
fi
|
||||
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
||||
wait
|
||||
fi
|
||||
@@ -1,99 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
|
||||
RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
|
||||
> "$RESOURCES_TO_COPY"
|
||||
|
||||
XCASSET_FILES=()
|
||||
|
||||
case "${TARGETED_DEVICE_FAMILY}" in
|
||||
1,2)
|
||||
TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
|
||||
;;
|
||||
1)
|
||||
TARGET_DEVICE_ARGS="--target-device iphone"
|
||||
;;
|
||||
2)
|
||||
TARGET_DEVICE_ARGS="--target-device ipad"
|
||||
;;
|
||||
3)
|
||||
TARGET_DEVICE_ARGS="--target-device tv"
|
||||
;;
|
||||
*)
|
||||
TARGET_DEVICE_ARGS="--target-device mac"
|
||||
;;
|
||||
esac
|
||||
|
||||
install_resource()
|
||||
{
|
||||
if [[ "$1" = /* ]] ; then
|
||||
RESOURCE_PATH="$1"
|
||||
else
|
||||
RESOURCE_PATH="${PODS_ROOT}/$1"
|
||||
fi
|
||||
if [[ ! -e "$RESOURCE_PATH" ]] ; then
|
||||
cat << EOM
|
||||
error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
|
||||
EOM
|
||||
exit 1
|
||||
fi
|
||||
case $RESOURCE_PATH in
|
||||
*.storyboard)
|
||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||
;;
|
||||
*.xib)
|
||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||
;;
|
||||
*.framework)
|
||||
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
;;
|
||||
*.xcdatamodel)
|
||||
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\""
|
||||
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
|
||||
;;
|
||||
*.xcdatamodeld)
|
||||
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\""
|
||||
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
|
||||
;;
|
||||
*.xcmappingmodel)
|
||||
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\""
|
||||
xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
|
||||
;;
|
||||
*.xcassets)
|
||||
ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
|
||||
XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
|
||||
;;
|
||||
*)
|
||||
echo "$RESOURCE_PATH"
|
||||
echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
|
||||
mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
fi
|
||||
rm -f "$RESOURCES_TO_COPY"
|
||||
|
||||
if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ]
|
||||
then
|
||||
# Find all other xcassets (this unfortunately includes those of path pods and other targets).
|
||||
OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
|
||||
while read line; do
|
||||
if [[ $line != "${PODS_ROOT}*" ]]; then
|
||||
XCASSET_FILES+=("$line")
|
||||
fi
|
||||
done <<<"$OTHER_XCASSETS"
|
||||
|
||||
printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
||||
fi
|
||||
@@ -1,16 +0,0 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#ifndef FOUNDATION_EXPORT
|
||||
#if defined(__cplusplus)
|
||||
#define FOUNDATION_EXPORT extern "C"
|
||||
#else
|
||||
#define FOUNDATION_EXPORT extern
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
FOUNDATION_EXPORT double Pods_My_MindVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char Pods_My_MindVersionString[];
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SwiftForms"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftForms/SwiftForms.framework/Headers"
|
||||
OTHER_LDFLAGS = $(inherited) -framework "SwiftForms"
|
||||
OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
|
||||
PODS_BUILD_DIR = $BUILD_DIR
|
||||
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
@@ -1,6 +0,0 @@
|
||||
framework module Pods_My_Mind {
|
||||
umbrella header "Pods-My Mind-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SwiftForms"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwiftForms/SwiftForms.framework/Headers"
|
||||
OTHER_LDFLAGS = $(inherited) -framework "SwiftForms"
|
||||
OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
|
||||
PODS_BUILD_DIR = $BUILD_DIR
|
||||
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_ROOT = ${SRCROOT}/Pods
|
||||
@@ -1,26 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.7.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${CURRENT_PROJECT_VERSION}</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,5 +0,0 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
@interface PodsDummy_SwiftForms : NSObject
|
||||
@end
|
||||
@implementation PodsDummy_SwiftForms
|
||||
@end
|
||||
@@ -1,12 +0,0 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#ifndef FOUNDATION_EXPORT
|
||||
#if defined(__cplusplus)
|
||||
#define FOUNDATION_EXPORT extern "C"
|
||||
#else
|
||||
#define FOUNDATION_EXPORT extern
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#ifndef FOUNDATION_EXPORT
|
||||
#if defined(__cplusplus)
|
||||
#define FOUNDATION_EXPORT extern "C"
|
||||
#else
|
||||
#define FOUNDATION_EXPORT extern
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
FOUNDATION_EXPORT double SwiftFormsVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char SwiftFormsVersionString[];
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
framework module SwiftForms {
|
||||
umbrella header "SwiftForms-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SwiftForms
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public"
|
||||
OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS"
|
||||
PODS_BUILD_DIR = $BUILD_DIR
|
||||
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||
PODS_ROOT = ${SRCROOT}
|
||||
PODS_TARGET_SRCROOT = ${PODS_ROOT}/SwiftForms
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||
SKIP_INSTALL = YES
|
||||
Reference in New Issue
Block a user