My Mind Login Complete
BIN
My Mind/.DS_Store
vendored
Normal file
1
My Mind/Cartfile.resolved
Normal file
@@ -0,0 +1 @@
|
||||
github "ortuman/SwiftForms" "1.8.2"
|
||||
18
My Mind/Carthage/Build/.SwiftForms.version
generated
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"Mac" : [
|
||||
|
||||
],
|
||||
"watchOS" : [
|
||||
|
||||
],
|
||||
"tvOS" : [
|
||||
|
||||
],
|
||||
"commitish" : "1.8.2",
|
||||
"iOS" : [
|
||||
{
|
||||
"name" : "SwiftForms",
|
||||
"hash" : "7762f57c5a4174efcced3bed1ae5cee63a9d0be11881e95334c247391ea7d739"
|
||||
}
|
||||
]
|
||||
}
|
||||
1552
My Mind/Carthage/Build/iOS/28B8EE72-D40C-3E43-B398-AB1B96421070.bcsymbolmap
generated
vendored
Normal file
1640
My Mind/Carthage/Build/iOS/92E5AB11-5B5A-33E7-8588-365F2FE39CFD.bcsymbolmap
generated
vendored
Normal file
20
My Mind/Carthage/Build/iOS/SwiftForms.framework.dSYM/Contents/Info.plist
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.apple.xcode.dsym.com.ortulabs.SwiftForms</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>dSYM</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.8.2</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
||||
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework.dSYM/Contents/Resources/DWARF/SwiftForms
generated
vendored
Normal file
366
My Mind/Carthage/Build/iOS/SwiftForms.framework/Headers/SwiftForms-Swift.h
generated
vendored
Normal file
@@ -0,0 +1,366 @@
|
||||
// Generated by Apple Swift version 4.2.1 (swiftlang-1000.11.42 clang-1000.11.45.1)
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wgcc-compat"
|
||||
|
||||
#if !defined(__has_include)
|
||||
# define __has_include(x) 0
|
||||
#endif
|
||||
#if !defined(__has_attribute)
|
||||
# define __has_attribute(x) 0
|
||||
#endif
|
||||
#if !defined(__has_feature)
|
||||
# define __has_feature(x) 0
|
||||
#endif
|
||||
#if !defined(__has_warning)
|
||||
# define __has_warning(x) 0
|
||||
#endif
|
||||
|
||||
#if __has_include(<swift/objc-prologue.h>)
|
||||
# include <swift/objc-prologue.h>
|
||||
#endif
|
||||
|
||||
#pragma clang diagnostic ignored "-Wauto-import"
|
||||
#include <objc/NSObject.h>
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#if !defined(SWIFT_TYPEDEFS)
|
||||
# define SWIFT_TYPEDEFS 1
|
||||
# if __has_include(<uchar.h>)
|
||||
# include <uchar.h>
|
||||
# elif !defined(__cplusplus)
|
||||
typedef uint_least16_t char16_t;
|
||||
typedef uint_least32_t char32_t;
|
||||
# endif
|
||||
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
|
||||
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
|
||||
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
|
||||
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
|
||||
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
|
||||
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
|
||||
#endif
|
||||
|
||||
#if !defined(SWIFT_PASTE)
|
||||
# define SWIFT_PASTE_HELPER(x, y) x##y
|
||||
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
|
||||
#endif
|
||||
#if !defined(SWIFT_METATYPE)
|
||||
# define SWIFT_METATYPE(X) Class
|
||||
#endif
|
||||
#if !defined(SWIFT_CLASS_PROPERTY)
|
||||
# if __has_feature(objc_class_property)
|
||||
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
|
||||
# else
|
||||
# define SWIFT_CLASS_PROPERTY(...)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if __has_attribute(objc_runtime_name)
|
||||
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
|
||||
#else
|
||||
# define SWIFT_RUNTIME_NAME(X)
|
||||
#endif
|
||||
#if __has_attribute(swift_name)
|
||||
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
|
||||
#else
|
||||
# define SWIFT_COMPILE_NAME(X)
|
||||
#endif
|
||||
#if __has_attribute(objc_method_family)
|
||||
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
|
||||
#else
|
||||
# define SWIFT_METHOD_FAMILY(X)
|
||||
#endif
|
||||
#if __has_attribute(noescape)
|
||||
# define SWIFT_NOESCAPE __attribute__((noescape))
|
||||
#else
|
||||
# define SWIFT_NOESCAPE
|
||||
#endif
|
||||
#if __has_attribute(warn_unused_result)
|
||||
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
|
||||
#else
|
||||
# define SWIFT_WARN_UNUSED_RESULT
|
||||
#endif
|
||||
#if __has_attribute(noreturn)
|
||||
# define SWIFT_NORETURN __attribute__((noreturn))
|
||||
#else
|
||||
# define SWIFT_NORETURN
|
||||
#endif
|
||||
#if !defined(SWIFT_CLASS_EXTRA)
|
||||
# define SWIFT_CLASS_EXTRA
|
||||
#endif
|
||||
#if !defined(SWIFT_PROTOCOL_EXTRA)
|
||||
# define SWIFT_PROTOCOL_EXTRA
|
||||
#endif
|
||||
#if !defined(SWIFT_ENUM_EXTRA)
|
||||
# define SWIFT_ENUM_EXTRA
|
||||
#endif
|
||||
#if !defined(SWIFT_CLASS)
|
||||
# if __has_attribute(objc_subclassing_restricted)
|
||||
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
|
||||
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
|
||||
# else
|
||||
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
|
||||
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !defined(SWIFT_PROTOCOL)
|
||||
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
|
||||
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
|
||||
#endif
|
||||
|
||||
#if !defined(SWIFT_EXTENSION)
|
||||
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
|
||||
#endif
|
||||
|
||||
#if !defined(OBJC_DESIGNATED_INITIALIZER)
|
||||
# if __has_attribute(objc_designated_initializer)
|
||||
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
|
||||
# else
|
||||
# define OBJC_DESIGNATED_INITIALIZER
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_ENUM_ATTR)
|
||||
# if defined(__has_attribute) && __has_attribute(enum_extensibility)
|
||||
# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
|
||||
# else
|
||||
# define SWIFT_ENUM_ATTR(_extensibility)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_ENUM)
|
||||
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
|
||||
# if __has_feature(generalized_swift_name)
|
||||
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
|
||||
# else
|
||||
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(SWIFT_UNAVAILABLE)
|
||||
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
|
||||
#endif
|
||||
#if !defined(SWIFT_UNAVAILABLE_MSG)
|
||||
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
|
||||
#endif
|
||||
#if !defined(SWIFT_AVAILABILITY)
|
||||
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
|
||||
#endif
|
||||
#if !defined(SWIFT_DEPRECATED)
|
||||
# define SWIFT_DEPRECATED __attribute__((deprecated))
|
||||
#endif
|
||||
#if !defined(SWIFT_DEPRECATED_MSG)
|
||||
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
|
||||
#endif
|
||||
#if __has_feature(attribute_diagnose_if_objc)
|
||||
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
|
||||
#else
|
||||
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
|
||||
#endif
|
||||
#if __has_feature(modules)
|
||||
@import CoreGraphics;
|
||||
@import Foundation;
|
||||
@import ObjectiveC;
|
||||
@import UIKit;
|
||||
#endif
|
||||
|
||||
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
|
||||
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
|
||||
#if __has_warning("-Wpragma-clang-attribute")
|
||||
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
|
||||
#endif
|
||||
#pragma clang diagnostic ignored "-Wunknown-pragmas"
|
||||
#pragma clang diagnostic ignored "-Wnullability"
|
||||
|
||||
#if __has_attribute(external_source_symbol)
|
||||
# pragma push_macro("any")
|
||||
# undef any
|
||||
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="SwiftForms",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
|
||||
# pragma pop_macro("any")
|
||||
#endif
|
||||
|
||||
@class NSCoder;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms12FormBaseCell")
|
||||
@interface FormBaseCell : UITableViewCell
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
- (void)updateConstraints;
|
||||
@end
|
||||
|
||||
@class UILabel;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms13FormTitleCell")
|
||||
@interface FormTitleCell : FormBaseCell
|
||||
@property (nonatomic, readonly, strong) UILabel * _Nonnull titleLabel;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms14FormButtonCell")
|
||||
@interface FormButtonCell : FormTitleCell
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms13FormCheckCell")
|
||||
@interface FormCheckCell : FormTitleCell
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms13FormValueCell")
|
||||
@interface FormValueCell : FormBaseCell
|
||||
@property (nonatomic, readonly, strong) UILabel * _Nonnull titleLabel;
|
||||
@property (nonatomic, readonly, strong) UILabel * _Nonnull valueLabel;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms12FormDateCell")
|
||||
@interface FormDateCell : FormValueCell
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms13FormLabelCell")
|
||||
@interface FormLabelCell : FormValueCell
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
SWIFT_PROTOCOL("_TtP10SwiftForms12FormSelector_")
|
||||
@protocol FormSelector <NSObject>
|
||||
@property (nonatomic, strong) FormBaseCell * _Nullable formCell;
|
||||
@end
|
||||
|
||||
@class NSBundle;
|
||||
@class UITableView;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms29FormOptionsSelectorController")
|
||||
@interface FormOptionsSelectorController : UITableViewController <FormSelector>
|
||||
@property (nonatomic, strong) FormBaseCell * _Nullable formCell;
|
||||
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil SWIFT_UNAVAILABLE;
|
||||
- (void)viewDidLoad;
|
||||
- (NSInteger)numberOfSectionsInTableView:(UITableView * _Nonnull)tableView SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSInteger)tableView:(UITableView * _Nonnull)tableView numberOfRowsInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (CGFloat)tableView:(UITableView * _Nonnull)tableView heightForHeaderInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (UITableViewCell * _Nonnull)tableView:(UITableView * _Nonnull)tableView cellForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath SWIFT_WARN_UNUSED_RESULT;
|
||||
- (void)tableView:(UITableView * _Nonnull)tableView didSelectRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewStyle)style SWIFT_UNAVAILABLE;
|
||||
@end
|
||||
|
||||
@class UIPickerView;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms14FormPickerCell")
|
||||
@interface FormPickerCell : FormValueCell <UIPickerViewDataSource, UIPickerViewDelegate>
|
||||
- (NSString * _Nullable)pickerView:(UIPickerView * _Nonnull)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component SWIFT_WARN_UNUSED_RESULT;
|
||||
- (void)pickerView:(UIPickerView * _Nonnull)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;
|
||||
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView * _Nonnull)pickerView SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSInteger)pickerView:(UIPickerView * _Nonnull)pickerView numberOfRowsInComponent:(NSInteger)component SWIFT_WARN_UNUSED_RESULT;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
@class UISegmentedControl;
|
||||
|
||||
SWIFT_CLASS_NAMED("FormSegmentedControlCell")
|
||||
@interface FormSegmentedControlCell : FormBaseCell
|
||||
@property (nonatomic, readonly, strong) UILabel * _Nonnull titleLabel;
|
||||
@property (nonatomic, readonly, strong) UISegmentedControl * _Nonnull segmentedControl;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms16FormSelectorCell")
|
||||
@interface FormSelectorCell : FormValueCell
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
@class UISlider;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms14FormSliderCell")
|
||||
@interface FormSliderCell : FormTitleCell
|
||||
@property (nonatomic, readonly, strong) UISlider * _Nonnull sliderView;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms15FormStepperCell")
|
||||
@interface FormStepperCell : FormTitleCell
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms14FormSwitchCell")
|
||||
@interface FormSwitchCell : FormTitleCell
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
@class UITextField;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms17FormTextFieldCell")
|
||||
@interface FormTextFieldCell : FormBaseCell
|
||||
@property (nonatomic, readonly, strong) UITextField * _Nonnull textField;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
@class UITextView;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms16FormTextViewCell")
|
||||
@interface FormTextViewCell : FormBaseCell <UITextViewDelegate>
|
||||
@property (nonatomic, readonly, strong) UILabel * _Nonnull titleLabel;
|
||||
@property (nonatomic, readonly, strong) UITextView * _Nonnull textField;
|
||||
- (void)textViewDidChange:(UITextView * _Nonnull)textView;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Null_unspecified)reuseIdentifier OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
@end
|
||||
|
||||
|
||||
|
||||
@class UIView;
|
||||
|
||||
SWIFT_CLASS("_TtC10SwiftForms18FormViewController")
|
||||
@interface FormViewController : UITableViewController
|
||||
- (nonnull instancetype)init;
|
||||
- (nonnull instancetype)initWithStyle:(UITableViewStyle)style OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil OBJC_DESIGNATED_INITIALIZER;
|
||||
- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
|
||||
- (void)viewDidLoad;
|
||||
- (NSInteger)numberOfSectionsInTableView:(UITableView * _Nonnull)tableView SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSInteger)tableView:(UITableView * _Nonnull)tableView numberOfRowsInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (UITableViewCell * _Nonnull)tableView:(UITableView * _Nonnull)tableView cellForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSString * _Nullable)tableView:(UITableView * _Nonnull)tableView titleForHeaderInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (NSString * _Nullable)tableView:(UITableView * _Nonnull)tableView titleForFooterInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (UIView * _Nullable)tableView:(UITableView * _Nonnull)tableView viewForHeaderInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (UIView * _Nullable)tableView:(UITableView * _Nonnull)tableView viewForFooterInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (CGFloat)tableView:(UITableView * _Nonnull)tableView heightForHeaderInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (CGFloat)tableView:(UITableView * _Nonnull)tableView heightForFooterInSection:(NSInteger)section SWIFT_WARN_UNUSED_RESULT;
|
||||
- (CGFloat)tableView:(UITableView * _Nonnull)tableView heightForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath SWIFT_WARN_UNUSED_RESULT;
|
||||
- (void)tableView:(UITableView * _Nonnull)tableView didSelectRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath;
|
||||
@end
|
||||
|
||||
#if __has_attribute(external_source_symbol)
|
||||
# pragma clang attribute pop
|
||||
#endif
|
||||
#pragma clang diagnostic pop
|
||||
19
My Mind/Carthage/Build/iOS/SwiftForms.framework/Headers/SwiftForms.h
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// SwiftForms.h
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno Ortuno on 14/5/15.
|
||||
// Copyright (c) 2015 Miguel Angel Ortuno Ortuno. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for SwiftForms.
|
||||
FOUNDATION_EXPORT double SwiftFormsVersionNumber;
|
||||
|
||||
//! Project version string for SwiftForms.
|
||||
FOUNDATION_EXPORT const unsigned char SwiftFormsVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <SwiftForms/PublicHeader.h>
|
||||
|
||||
|
||||
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/Info.plist
generated
vendored
Normal file
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/Modules/SwiftForms.swiftmodule/arm.swiftdoc
generated
vendored
Normal file
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/Modules/SwiftForms.swiftmodule/arm.swiftmodule
generated
vendored
Normal file
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/Modules/SwiftForms.swiftmodule/arm64.swiftdoc
generated
vendored
Normal file
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/Modules/SwiftForms.swiftmodule/arm64.swiftmodule
generated
vendored
Normal file
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/Modules/SwiftForms.swiftmodule/i386.swiftdoc
generated
vendored
Normal file
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/Modules/SwiftForms.swiftmodule/i386.swiftmodule
generated
vendored
Normal file
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/Modules/SwiftForms.swiftmodule/x86_64.swiftdoc
generated
vendored
Normal file
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/Modules/SwiftForms.swiftmodule/x86_64.swiftmodule
generated
vendored
Normal file
11
My Mind/Carthage/Build/iOS/SwiftForms.framework/Modules/module.modulemap
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
framework module SwiftForms {
|
||||
umbrella header "SwiftForms.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
|
||||
module SwiftForms.Swift {
|
||||
header "SwiftForms-Swift.h"
|
||||
requires objc
|
||||
}
|
||||
BIN
My Mind/Carthage/Build/iOS/SwiftForms.framework/SwiftForms
generated
vendored
Executable file
60
My Mind/Carthage/Checkouts/SwiftForms/.gitignore
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
# Compiled source #
|
||||
###################
|
||||
*.com
|
||||
*.class
|
||||
*.dll
|
||||
*.exe
|
||||
*.o
|
||||
*.so
|
||||
|
||||
# Packages #
|
||||
############
|
||||
# it's better to unpack these files and commit the raw source
|
||||
# git has its own built in compression methods
|
||||
*.7z
|
||||
*.dmg
|
||||
*.gz
|
||||
*.iso
|
||||
*.jar
|
||||
*.rar
|
||||
*.tar
|
||||
*.zip
|
||||
|
||||
# Logs and databases #
|
||||
######################
|
||||
*.log
|
||||
*.sql
|
||||
*.sqlite
|
||||
|
||||
# OS generated files #
|
||||
######################
|
||||
.DS_Store
|
||||
.DS_Store?
|
||||
._*
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
ehthumbs.db
|
||||
Thumbs.db
|
||||
|
||||
# Pods #
|
||||
########
|
||||
Pods/
|
||||
|
||||
# Xcode #
|
||||
#########
|
||||
build/
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
*.xcworkspace
|
||||
!default.xcworkspace
|
||||
xcuserdata
|
||||
profile
|
||||
*.moved-aside
|
||||
DerivedData
|
||||
.idea/
|
||||
1
My Mind/Carthage/Checkouts/SwiftForms/.swift-version
vendored
Normal file
@@ -0,0 +1 @@
|
||||
4.2
|
||||
21
My Mind/Carthage/Checkouts/SwiftForms/LICENSE
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
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/Carthage/Checkouts/SwiftForms/README.MD
vendored
Normal file
@@ -0,0 +1,155 @@
|
||||
|
||||
[](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)
|
||||
|
||||
11
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms.podspec
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = "SwiftForms"
|
||||
s.version = "1.8.2"
|
||||
s.summary = "A small and lightweight library written in Swift that allows you to easily create forms"
|
||||
s.homepage = "https://github.com/ortuman/SwiftForms"
|
||||
s.license = { :type => "MIT", :file => "LICENSE" }
|
||||
s.authors = "Miguel Ángel Ortuño"
|
||||
s.ios.deployment_target = "8.0"
|
||||
s.source = { :git => "https://github.com/ortuman/SwiftForms.git", :tag => '1.8.2' }
|
||||
s.source_files = 'SwiftForms/*.swift','SwiftForms/descriptors/*.swift', 'SwiftForms/cells/base/*.swift', 'SwiftForms/cells/*.swift', 'SwiftForms/controllers/*.swift'
|
||||
end
|
||||
12
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/FormErrorType.swift
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
//
|
||||
// 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
|
||||
}
|
||||
26
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/Info.plist
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
<?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.8.2</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
19
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/SwiftForms.h
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// SwiftForms.h
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno Ortuno on 14/5/15.
|
||||
// Copyright (c) 2015 Miguel Angel Ortuno Ortuno. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for SwiftForms.
|
||||
FOUNDATION_EXPORT double SwiftFormsVersionNumber;
|
||||
|
||||
//! Project version string for SwiftForms.
|
||||
FOUNDATION_EXPORT const unsigned char SwiftFormsVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <SwiftForms/PublicHeader.h>
|
||||
|
||||
|
||||
24
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/cells/FormButtonCell.swift
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
//
|
||||
// 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
|
||||
}
|
||||
}
|
||||
55
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/cells/FormCheckCell.swift
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
//
|
||||
// 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()
|
||||
}
|
||||
}
|
||||
98
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/cells/FormDateCell.swift
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
//
|
||||
// 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
|
||||
|
||||
private let datePicker = UIDatePicker()
|
||||
private let hiddenTextField = UITextField(frame: CGRect.zero)
|
||||
|
||||
private let defaultDateFormatter = DateFormatter()
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
contentView.addSubview(hiddenTextField)
|
||||
hiddenTextField.inputView = datePicker
|
||||
hiddenTextField.isAccessibilityElement = false
|
||||
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
|
||||
|
||||
@objc 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
|
||||
}
|
||||
}
|
||||
48
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/cells/FormLabelCell.swift
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
//
|
||||
// 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
|
||||
|
||||
open class FormLabelCell: FormValueCell {
|
||||
|
||||
/// MARK: FormBaseCell
|
||||
|
||||
override open func configure() {
|
||||
super.configure()
|
||||
|
||||
accessoryType = .none
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
valueLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.body)
|
||||
valueLabel.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.body)
|
||||
|
||||
valueLabel.textColor = UIColor.lightGray
|
||||
valueLabel.textAlignment = .right
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(valueLabel)
|
||||
|
||||
titleLabel.setContentHuggingPriority(UILayoutPriority(rawValue: 500), for: .horizontal)
|
||||
titleLabel.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 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 open func update() {
|
||||
super.update()
|
||||
|
||||
titleLabel.text = rowDescriptor?.title
|
||||
valueLabel.text = rowDescriptor?.configuration.cell.placeholder
|
||||
}
|
||||
}
|
||||
106
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/cells/FormPickerCell.swift
vendored
Normal file
@@ -0,0 +1,106 @@
|
||||
//
|
||||
// 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
|
||||
|
||||
private let picker = UIPickerView()
|
||||
private 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
|
||||
hiddenTextField.isAccessibilityElement = false
|
||||
|
||||
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
|
||||
valueLabel.text = ""
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
100
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/cells/FormSegmentedControlCell.swift
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
//
|
||||
// FormSegmentedControlCell.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 21/08/14.
|
||||
// Copyright (c) 2016 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
@objc(FormSegmentedControlCell)
|
||||
open class FormSegmentedControlCell: FormBaseCell {
|
||||
|
||||
// MARK: Cell views
|
||||
|
||||
@objc public let titleLabel = UILabel()
|
||||
@objc public 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(UILayoutPriority(rawValue: 500), for: .horizontal)
|
||||
segmentedControl.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 500), for: .horizontal)
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.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.count > 0 {
|
||||
return ["H:|-16-[titleLabel]-16-[segmentedControl]-16-|"]
|
||||
} else {
|
||||
return ["H:|-16-[segmentedControl]-16-|"]
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
@objc 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
|
||||
}
|
||||
}
|
||||
}
|
||||
63
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/cells/FormSelectorCell.swift
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
//
|
||||
// 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.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)
|
||||
}
|
||||
}
|
||||
75
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/cells/FormSliderCell.swift
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
//
|
||||
// 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
|
||||
|
||||
@objc public let sliderView = UISlider()
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
selectionStyle = .none
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
sliderView.translatesAutoresizingMaskIntoConstraints = false
|
||||
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.body)
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(sliderView)
|
||||
|
||||
titleLabel.setContentHuggingPriority(UILayoutPriority(rawValue: 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
|
||||
|
||||
@objc internal func valueChanged(_: UISlider) {
|
||||
rowDescriptor?.value = sliderView.value as AnyObject
|
||||
update()
|
||||
}
|
||||
}
|
||||
82
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/cells/FormStepperCell.swift
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
//
|
||||
// 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
|
||||
|
||||
public let stepperView = UIStepper()
|
||||
public 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: UIFont.TextStyle.body)
|
||||
countLabel.textAlignment = .right
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(countLabel)
|
||||
contentView.addSubview(stepperView)
|
||||
|
||||
titleLabel.setContentHuggingPriority(UILayoutPriority(rawValue: 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
|
||||
|
||||
@objc internal func valueChanged(_: UISwitch) {
|
||||
rowDescriptor?.value = stepperView.value as AnyObject
|
||||
update()
|
||||
}
|
||||
}
|
||||
47
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/cells/FormSwitchCell.swift
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// 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
|
||||
|
||||
public 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
|
||||
|
||||
@objc internal func valueChanged(_: UISwitch) {
|
||||
rowDescriptor?.value = switchView.isOn as AnyObject
|
||||
update()
|
||||
}
|
||||
}
|
||||
148
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/cells/FormTextFieldCell.swift
vendored
Normal file
@@ -0,0 +1,148 @@
|
||||
//
|
||||
// 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
|
||||
|
||||
public let titleLabel = UILabel()
|
||||
@objc public 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: UIFont.TextStyle.body)
|
||||
textField.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.body)
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(textField)
|
||||
|
||||
titleLabel.setContentHuggingPriority(UILayoutPriority(rawValue: 500), for: .horizontal)
|
||||
titleLabel.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 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!).count > 0 {
|
||||
return ["H:[imageView]-[titleLabel]-[textField]-16-|"]
|
||||
} else {
|
||||
return ["H:[imageView]-[textField]-16-|"]
|
||||
}
|
||||
} else {
|
||||
if titleLabel.text != nil && (titleLabel.text!).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
|
||||
|
||||
@objc func editingChanged(_ sender: UITextField) {
|
||||
guard let text = sender.text, text.count > 0 else { rowDescriptor?.value = nil; update(); return }
|
||||
rowDescriptor?.value = text as AnyObject
|
||||
}
|
||||
}
|
||||
96
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/cells/FormTextViewCell.swift
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
//
|
||||
// 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
|
||||
|
||||
@objc public let titleLabel = UILabel()
|
||||
@objc public 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: UIFont.TextStyle.body)
|
||||
textField.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.body)
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(textField)
|
||||
|
||||
titleLabel.setContentHuggingPriority(UILayoutPriority(rawValue: 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.count > 0 {
|
||||
return ["H:[imageView]-[titleLabel]-[textField]-16-|"]
|
||||
} else {
|
||||
return ["H:[imageView]-[textField]-16-|"]
|
||||
}
|
||||
} else {
|
||||
if let text = titleLabel.text , text.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.count > 0 else { rowDescriptor?.value = nil; update(); return }
|
||||
rowDescriptor?.value = text as AnyObject
|
||||
update()
|
||||
}
|
||||
}
|
||||
118
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/cells/base/FormBaseCell.swift
vendored
Normal file
@@ -0,0 +1,118 @@
|
||||
//
|
||||
// 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: UITableViewCell.CellStyle, 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(barButtonSystemItem: .done, target: self, action: #selector(FormBaseCell.handleDoneAction(_:)))
|
||||
let flexible = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
|
||||
actionBar.items = [flexible, doneButton]
|
||||
|
||||
return actionBar
|
||||
}
|
||||
|
||||
@objc 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: NSLayoutConstraint.FormatOptions(rawValue: 0), metrics: nil, views: views)
|
||||
for constraint in constraints {
|
||||
customConstraints.append(constraint)
|
||||
}
|
||||
}
|
||||
|
||||
contentView.addConstraints(customConstraints)
|
||||
super.updateConstraints()
|
||||
}
|
||||
}
|
||||
38
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/cells/base/FormTitleCell.swift
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
//
|
||||
// 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
|
||||
|
||||
@objc public let titleLabel = UILabel()
|
||||
|
||||
// MARK: FormBaseCell
|
||||
|
||||
open override func configure() {
|
||||
super.configure()
|
||||
|
||||
titleLabel.translatesAutoresizingMaskIntoConstraints = false
|
||||
titleLabel.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.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-|"]
|
||||
}
|
||||
}
|
||||
70
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/cells/base/FormValueCell.swift
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
//
|
||||
// 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
|
||||
|
||||
@objc public let titleLabel = UILabel()
|
||||
@objc public 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: UIFont.TextStyle.body)
|
||||
valueLabel.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.body)
|
||||
|
||||
valueLabel.textColor = UIColor.lightGray
|
||||
valueLabel.textAlignment = .right
|
||||
|
||||
contentView.addSubview(titleLabel)
|
||||
contentView.addSubview(valueLabel)
|
||||
|
||||
titleLabel.setContentHuggingPriority(UILayoutPriority(rawValue: 500), for: .horizontal)
|
||||
titleLabel.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 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!).count > 0 {
|
||||
return ["H:|-16-[titleLabel]-[valueLabel]-\(rightPadding)-|"]
|
||||
}
|
||||
else {
|
||||
return ["H:|-16-[valueLabel]-\(rightPadding)-|"]
|
||||
}
|
||||
}
|
||||
}
|
||||
125
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/controllers/FormOptionsViewController.swift
vendored
Normal file
@@ -0,0 +1,125 @@
|
||||
//
|
||||
// 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)
|
||||
}
|
||||
}
|
||||
}
|
||||
13
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/controllers/FormSelector.swift
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// 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 }
|
||||
}
|
||||
225
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/controllers/FormViewController.swift
vendored
Normal file
@@ -0,0 +1,225 @@
|
||||
//
|
||||
// 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: UITableView.Style) {
|
||||
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, viewForHeaderInSection section: Int) -> UIView? {
|
||||
guard let headerView = form.sections[section].headerView else { return nil }
|
||||
return headerView
|
||||
}
|
||||
|
||||
open override func tableView(_ tableView: UITableView, viewForFooterInSection 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
|
||||
}
|
||||
}
|
||||
58
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/descriptors/FormDescriptor.swift
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
//
|
||||
// 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
|
||||
}
|
||||
}
|
||||
159
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/descriptors/FormRowDescriptor.swift
vendored
Normal file
@@ -0,0 +1,159 @@
|
||||
//
|
||||
// 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()
|
||||
}
|
||||
}
|
||||
32
My Mind/Carthage/Checkouts/SwiftForms/SwiftForms/descriptors/FormSectionDescriptor.swift
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
//
|
||||
// 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 = UITableView.automaticDimension
|
||||
public var footerViewHeight: CGFloat = UITableView.automaticDimension
|
||||
|
||||
// MARK: Init
|
||||
|
||||
public init(headerTitle: String?, footerTitle: String?) {
|
||||
self.headerTitle = headerTitle
|
||||
self.footerTitle = footerTitle
|
||||
}
|
||||
}
|
||||
620
My Mind/Carthage/Checkouts/SwiftForms/SwiftFormsApplication.xcodeproj/project.pbxproj
vendored
Normal file
@@ -0,0 +1,620 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0C9D1DF31D2267EE00909941 /* FormOptionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C9D1DF21D2267EE00909941 /* FormOptionsViewController.swift */; };
|
||||
0CB1F6C31C37F9B900CD2A7B /* FormErrorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CB1F6C21C37F9B900CD2A7B /* FormErrorType.swift */; };
|
||||
0CCA33DD1B04FA5A006D9666 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA33DC1B04FA5A006D9666 /* AppDelegate.swift */; };
|
||||
0CCA33DF1B04FA5A006D9666 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA33DE1B04FA5A006D9666 /* ViewController.swift */; };
|
||||
0CCA33E21B04FA5A006D9666 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0CCA33E01B04FA5A006D9666 /* Main.storyboard */; };
|
||||
0CCA33E41B04FA5A006D9666 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0CCA33E31B04FA5A006D9666 /* Images.xcassets */; };
|
||||
0CCA34141B04FAD3006D9666 /* ExampleFormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA33FC1B04FAD3006D9666 /* ExampleFormViewController.swift */; };
|
||||
0CCA34311B04FBE0006D9666 /* SwiftForms.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CCA34301B04FBE0006D9666 /* SwiftForms.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
0CCA34431B04FBE0006D9666 /* SwiftForms.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0CCA342C1B04FBDF006D9666 /* SwiftForms.framework */; };
|
||||
0CCA34441B04FBE0006D9666 /* SwiftForms.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0CCA342C1B04FBDF006D9666 /* SwiftForms.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
0CCA34611B0502B5006D9666 /* Launch.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0CCA34601B0502B5006D9666 /* Launch.storyboard */; };
|
||||
0CCA34781B050525006D9666 /* FormBaseCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34641B050525006D9666 /* FormBaseCell.swift */; };
|
||||
0CCA34791B050525006D9666 /* FormTitleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34651B050525006D9666 /* FormTitleCell.swift */; };
|
||||
0CCA347A1B050525006D9666 /* FormValueCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34661B050525006D9666 /* FormValueCell.swift */; };
|
||||
0CCA347B1B050525006D9666 /* FormButtonCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34671B050525006D9666 /* FormButtonCell.swift */; };
|
||||
0CCA347C1B050525006D9666 /* FormCheckCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34681B050525006D9666 /* FormCheckCell.swift */; };
|
||||
0CCA347D1B050525006D9666 /* FormDateCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34691B050525006D9666 /* FormDateCell.swift */; };
|
||||
0CCA347E1B050525006D9666 /* FormPickerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA346A1B050525006D9666 /* FormPickerCell.swift */; };
|
||||
0CCA347F1B050525006D9666 /* FormSegmentedControlCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA346B1B050525006D9666 /* FormSegmentedControlCell.swift */; };
|
||||
0CCA34801B050525006D9666 /* FormSelectorCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA346C1B050525006D9666 /* FormSelectorCell.swift */; };
|
||||
0CCA34811B050525006D9666 /* FormSwitchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA346D1B050525006D9666 /* FormSwitchCell.swift */; };
|
||||
0CCA34821B050525006D9666 /* FormTextFieldCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA346E1B050525006D9666 /* FormTextFieldCell.swift */; };
|
||||
0CCA34831B050525006D9666 /* FormTextViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA346F1B050525006D9666 /* FormTextViewCell.swift */; };
|
||||
0CCA34851B050525006D9666 /* FormSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34721B050525006D9666 /* FormSelector.swift */; };
|
||||
0CCA34861B050525006D9666 /* FormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34731B050525006D9666 /* FormViewController.swift */; };
|
||||
0CCA34871B050525006D9666 /* FormDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34751B050525006D9666 /* FormDescriptor.swift */; };
|
||||
0CCA34881B050525006D9666 /* FormRowDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34761B050525006D9666 /* FormRowDescriptor.swift */; };
|
||||
0CCA34891B050525006D9666 /* FormSectionDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCA34771B050525006D9666 /* FormSectionDescriptor.swift */; };
|
||||
0CDBB4F11B10699A00BE6ACF /* FormStepperCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CDBB4F01B10699A00BE6ACF /* FormStepperCell.swift */; };
|
||||
0CDBB4F31B10724600BE6ACF /* FormSliderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CDBB4F21B10724600BE6ACF /* FormSliderCell.swift */; };
|
||||
BDD1087A1C925D14000EDEE5 /* FormLabelCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDD108791C925D14000EDEE5 /* FormLabelCell.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
0CCA34411B04FBE0006D9666 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 0CCA33CF1B04FA5A006D9666 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 0CCA342B1B04FBDF006D9666;
|
||||
remoteInfo = SwiftForms;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
0CCA34481B04FBE0006D9666 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
0CCA34441B04FBE0006D9666 /* SwiftForms.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0C9D1DF21D2267EE00909941 /* FormOptionsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormOptionsViewController.swift; sourceTree = "<group>"; };
|
||||
0CB1F6C21C37F9B900CD2A7B /* FormErrorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormErrorType.swift; sourceTree = "<group>"; };
|
||||
0CCA33D71B04FA5A006D9666 /* SwiftFormsApplication.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftFormsApplication.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
0CCA33DB1B04FA5A006D9666 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
0CCA33DC1B04FA5A006D9666 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
0CCA33DE1B04FA5A006D9666 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
||||
0CCA33E11B04FA5A006D9666 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
0CCA33E31B04FA5A006D9666 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
|
||||
0CCA33FC1B04FAD3006D9666 /* ExampleFormViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleFormViewController.swift; sourceTree = "<group>"; };
|
||||
0CCA342C1B04FBDF006D9666 /* SwiftForms.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftForms.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
0CCA342F1B04FBE0006D9666 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
0CCA34301B04FBE0006D9666 /* SwiftForms.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SwiftForms.h; sourceTree = "<group>"; };
|
||||
0CCA34601B0502B5006D9666 /* Launch.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Launch.storyboard; sourceTree = "<group>"; };
|
||||
0CCA34641B050525006D9666 /* FormBaseCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormBaseCell.swift; sourceTree = "<group>"; };
|
||||
0CCA34651B050525006D9666 /* FormTitleCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormTitleCell.swift; sourceTree = "<group>"; };
|
||||
0CCA34661B050525006D9666 /* FormValueCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormValueCell.swift; sourceTree = "<group>"; };
|
||||
0CCA34671B050525006D9666 /* FormButtonCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormButtonCell.swift; sourceTree = "<group>"; };
|
||||
0CCA34681B050525006D9666 /* FormCheckCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormCheckCell.swift; sourceTree = "<group>"; };
|
||||
0CCA34691B050525006D9666 /* FormDateCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormDateCell.swift; sourceTree = "<group>"; };
|
||||
0CCA346A1B050525006D9666 /* FormPickerCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormPickerCell.swift; sourceTree = "<group>"; };
|
||||
0CCA346B1B050525006D9666 /* FormSegmentedControlCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormSegmentedControlCell.swift; sourceTree = "<group>"; };
|
||||
0CCA346C1B050525006D9666 /* FormSelectorCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormSelectorCell.swift; sourceTree = "<group>"; };
|
||||
0CCA346D1B050525006D9666 /* FormSwitchCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormSwitchCell.swift; sourceTree = "<group>"; };
|
||||
0CCA346E1B050525006D9666 /* FormTextFieldCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormTextFieldCell.swift; sourceTree = "<group>"; };
|
||||
0CCA346F1B050525006D9666 /* FormTextViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormTextViewCell.swift; sourceTree = "<group>"; };
|
||||
0CCA34721B050525006D9666 /* FormSelector.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormSelector.swift; sourceTree = "<group>"; };
|
||||
0CCA34731B050525006D9666 /* FormViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormViewController.swift; sourceTree = "<group>"; };
|
||||
0CCA34751B050525006D9666 /* FormDescriptor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormDescriptor.swift; sourceTree = "<group>"; };
|
||||
0CCA34761B050525006D9666 /* FormRowDescriptor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormRowDescriptor.swift; sourceTree = "<group>"; };
|
||||
0CCA34771B050525006D9666 /* FormSectionDescriptor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormSectionDescriptor.swift; sourceTree = "<group>"; };
|
||||
0CDBB4F01B10699A00BE6ACF /* FormStepperCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormStepperCell.swift; sourceTree = "<group>"; };
|
||||
0CDBB4F21B10724600BE6ACF /* FormSliderCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormSliderCell.swift; sourceTree = "<group>"; };
|
||||
BDD108791C925D14000EDEE5 /* FormLabelCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormLabelCell.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
0CCA33D41B04FA5A006D9666 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0CCA34431B04FBE0006D9666 /* SwiftForms.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
0CCA34281B04FBDF006D9666 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
0CCA33CE1B04FA5A006D9666 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA33D91B04FA5A006D9666 /* SwiftFormsApplication */,
|
||||
0CCA342D1B04FBE0006D9666 /* SwiftForms */,
|
||||
0CCA33D81B04FA5A006D9666 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA33D81B04FA5A006D9666 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA33D71B04FA5A006D9666 /* SwiftFormsApplication.app */,
|
||||
0CCA342C1B04FBDF006D9666 /* SwiftForms.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA33D91B04FA5A006D9666 /* SwiftFormsApplication */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA33FC1B04FAD3006D9666 /* ExampleFormViewController.swift */,
|
||||
0CCA33DC1B04FA5A006D9666 /* AppDelegate.swift */,
|
||||
0CCA33DE1B04FA5A006D9666 /* ViewController.swift */,
|
||||
0CCA33E01B04FA5A006D9666 /* Main.storyboard */,
|
||||
0CCA33E31B04FA5A006D9666 /* Images.xcassets */,
|
||||
0CCA33DA1B04FA5A006D9666 /* Supporting Files */,
|
||||
0CCA34601B0502B5006D9666 /* Launch.storyboard */,
|
||||
);
|
||||
path = SwiftFormsApplication;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA33DA1B04FA5A006D9666 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA33DB1B04FA5A006D9666 /* Info.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA342D1B04FBE0006D9666 /* SwiftForms */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA34621B050525006D9666 /* cells */,
|
||||
0CCA34701B050525006D9666 /* controllers */,
|
||||
0CCA34741B050525006D9666 /* descriptors */,
|
||||
0CB1F6C21C37F9B900CD2A7B /* FormErrorType.swift */,
|
||||
0CCA34301B04FBE0006D9666 /* SwiftForms.h */,
|
||||
0CCA342E1B04FBE0006D9666 /* Supporting Files */,
|
||||
);
|
||||
path = SwiftForms;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA342E1B04FBE0006D9666 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA342F1B04FBE0006D9666 /* Info.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA34621B050525006D9666 /* cells */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA34631B050525006D9666 /* base */,
|
||||
0CCA34671B050525006D9666 /* FormButtonCell.swift */,
|
||||
BDD108791C925D14000EDEE5 /* FormLabelCell.swift */,
|
||||
0CCA34681B050525006D9666 /* FormCheckCell.swift */,
|
||||
0CCA34691B050525006D9666 /* FormDateCell.swift */,
|
||||
0CCA346A1B050525006D9666 /* FormPickerCell.swift */,
|
||||
0CCA346B1B050525006D9666 /* FormSegmentedControlCell.swift */,
|
||||
0CCA346C1B050525006D9666 /* FormSelectorCell.swift */,
|
||||
0CCA346D1B050525006D9666 /* FormSwitchCell.swift */,
|
||||
0CCA346E1B050525006D9666 /* FormTextFieldCell.swift */,
|
||||
0CCA346F1B050525006D9666 /* FormTextViewCell.swift */,
|
||||
0CDBB4F01B10699A00BE6ACF /* FormStepperCell.swift */,
|
||||
0CDBB4F21B10724600BE6ACF /* FormSliderCell.swift */,
|
||||
);
|
||||
path = cells;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA34631B050525006D9666 /* base */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA34641B050525006D9666 /* FormBaseCell.swift */,
|
||||
0CCA34651B050525006D9666 /* FormTitleCell.swift */,
|
||||
0CCA34661B050525006D9666 /* FormValueCell.swift */,
|
||||
);
|
||||
path = base;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA34701B050525006D9666 /* controllers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA34721B050525006D9666 /* FormSelector.swift */,
|
||||
0CCA34731B050525006D9666 /* FormViewController.swift */,
|
||||
0C9D1DF21D2267EE00909941 /* FormOptionsViewController.swift */,
|
||||
);
|
||||
path = controllers;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0CCA34741B050525006D9666 /* descriptors */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0CCA34751B050525006D9666 /* FormDescriptor.swift */,
|
||||
0CCA34761B050525006D9666 /* FormRowDescriptor.swift */,
|
||||
0CCA34771B050525006D9666 /* FormSectionDescriptor.swift */,
|
||||
);
|
||||
path = descriptors;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
0CCA34291B04FBDF006D9666 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0CCA34311B04FBE0006D9666 /* SwiftForms.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
0CCA33D61B04FA5A006D9666 /* SwiftFormsApplication */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 0CCA33F61B04FA5A006D9666 /* Build configuration list for PBXNativeTarget "SwiftFormsApplication" */;
|
||||
buildPhases = (
|
||||
0CCA33D31B04FA5A006D9666 /* Sources */,
|
||||
0CCA33D41B04FA5A006D9666 /* Frameworks */,
|
||||
0CCA33D51B04FA5A006D9666 /* Resources */,
|
||||
0CCA34481B04FBE0006D9666 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
0CCA34421B04FBE0006D9666 /* PBXTargetDependency */,
|
||||
);
|
||||
name = SwiftFormsApplication;
|
||||
productName = SwiftFormsApplication;
|
||||
productReference = 0CCA33D71B04FA5A006D9666 /* SwiftFormsApplication.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
0CCA342B1B04FBDF006D9666 /* SwiftForms */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 0CCA34451B04FBE0006D9666 /* Build configuration list for PBXNativeTarget "SwiftForms" */;
|
||||
buildPhases = (
|
||||
0CCA34271B04FBDF006D9666 /* Sources */,
|
||||
0CCA34281B04FBDF006D9666 /* Frameworks */,
|
||||
0CCA34291B04FBDF006D9666 /* Headers */,
|
||||
0CCA342A1B04FBDF006D9666 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = SwiftForms;
|
||||
productName = SwiftForms;
|
||||
productReference = 0CCA342C1B04FBDF006D9666 /* SwiftForms.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
0CCA33CF1B04FA5A006D9666 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftMigration = 0700;
|
||||
LastSwiftUpdateCheck = 0700;
|
||||
LastUpgradeCheck = 1000;
|
||||
ORGANIZATIONNAME = "Miguel Angel Ortuno Ortuno";
|
||||
TargetAttributes = {
|
||||
0CCA33D61B04FA5A006D9666 = {
|
||||
CreatedOnToolsVersion = 6.3.1;
|
||||
LastSwiftMigration = 1000;
|
||||
};
|
||||
0CCA342B1B04FBDF006D9666 = {
|
||||
CreatedOnToolsVersion = 6.3.1;
|
||||
LastSwiftMigration = 1000;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 0CCA33D21B04FA5A006D9666 /* Build configuration list for PBXProject "SwiftFormsApplication" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 0CCA33CE1B04FA5A006D9666;
|
||||
productRefGroup = 0CCA33D81B04FA5A006D9666 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
0CCA33D61B04FA5A006D9666 /* SwiftFormsApplication */,
|
||||
0CCA342B1B04FBDF006D9666 /* SwiftForms */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
0CCA33D51B04FA5A006D9666 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0CCA33E21B04FA5A006D9666 /* Main.storyboard in Resources */,
|
||||
0CCA34611B0502B5006D9666 /* Launch.storyboard in Resources */,
|
||||
0CCA33E41B04FA5A006D9666 /* Images.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
0CCA342A1B04FBDF006D9666 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
0CCA33D31B04FA5A006D9666 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0CCA33DF1B04FA5A006D9666 /* ViewController.swift in Sources */,
|
||||
0CCA34141B04FAD3006D9666 /* ExampleFormViewController.swift in Sources */,
|
||||
0CCA33DD1B04FA5A006D9666 /* AppDelegate.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
0CCA34271B04FBDF006D9666 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0CCA34851B050525006D9666 /* FormSelector.swift in Sources */,
|
||||
0CCA34791B050525006D9666 /* FormTitleCell.swift in Sources */,
|
||||
0CDBB4F31B10724600BE6ACF /* FormSliderCell.swift in Sources */,
|
||||
0CCA34891B050525006D9666 /* FormSectionDescriptor.swift in Sources */,
|
||||
0CCA34871B050525006D9666 /* FormDescriptor.swift in Sources */,
|
||||
0CCA34781B050525006D9666 /* FormBaseCell.swift in Sources */,
|
||||
BDD1087A1C925D14000EDEE5 /* FormLabelCell.swift in Sources */,
|
||||
0CCA34831B050525006D9666 /* FormTextViewCell.swift in Sources */,
|
||||
0CB1F6C31C37F9B900CD2A7B /* FormErrorType.swift in Sources */,
|
||||
0CCA34861B050525006D9666 /* FormViewController.swift in Sources */,
|
||||
0CCA347B1B050525006D9666 /* FormButtonCell.swift in Sources */,
|
||||
0CDBB4F11B10699A00BE6ACF /* FormStepperCell.swift in Sources */,
|
||||
0CCA34801B050525006D9666 /* FormSelectorCell.swift in Sources */,
|
||||
0CCA34811B050525006D9666 /* FormSwitchCell.swift in Sources */,
|
||||
0CCA347C1B050525006D9666 /* FormCheckCell.swift in Sources */,
|
||||
0CCA347A1B050525006D9666 /* FormValueCell.swift in Sources */,
|
||||
0CCA347F1B050525006D9666 /* FormSegmentedControlCell.swift in Sources */,
|
||||
0CCA34821B050525006D9666 /* FormTextFieldCell.swift in Sources */,
|
||||
0CCA347E1B050525006D9666 /* FormPickerCell.swift in Sources */,
|
||||
0C9D1DF31D2267EE00909941 /* FormOptionsViewController.swift in Sources */,
|
||||
0CCA347D1B050525006D9666 /* FormDateCell.swift in Sources */,
|
||||
0CCA34881B050525006D9666 /* FormRowDescriptor.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
0CCA34421B04FBE0006D9666 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 0CCA342B1B04FBDF006D9666 /* SwiftForms */;
|
||||
targetProxy = 0CCA34411B04FBE0006D9666 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
0CCA33E01B04FA5A006D9666 /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
0CCA33E11B04FA5A006D9666 /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
0CCA33F41B04FA5A006D9666 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 4.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
0CCA33F51B04FA5A006D9666 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_VERSION = 4.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
0CCA33F71B04FA5A006D9666 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = SwiftFormsApplication/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.ortulabs.SwiftFormsApplication;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 4.2;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
0CCA33F81B04FA5A006D9666 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = SwiftFormsApplication/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.ortulabs.SwiftFormsApplication;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 4.2;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
0CCA34461B04FBE0006D9666 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
INFOPLIST_FILE = 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";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.ortulabs.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 4.2;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
0CCA34471B04FBE0006D9666 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = 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";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.ortulabs.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 4.2;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
0CCA33D21B04FA5A006D9666 /* Build configuration list for PBXProject "SwiftFormsApplication" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
0CCA33F41B04FA5A006D9666 /* Debug */,
|
||||
0CCA33F51B04FA5A006D9666 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
0CCA33F61B04FA5A006D9666 /* Build configuration list for PBXNativeTarget "SwiftFormsApplication" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
0CCA33F71B04FA5A006D9666 /* Debug */,
|
||||
0CCA33F81B04FA5A006D9666 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
0CCA34451B04FBE0006D9666 /* Build configuration list for PBXNativeTarget "SwiftForms" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
0CCA34461B04FBE0006D9666 /* Debug */,
|
||||
0CCA34471B04FBE0006D9666 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 0CCA33CF1B04FA5A006D9666 /* Project object */;
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1000"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0CCA342B1B04FBDF006D9666"
|
||||
BuildableName = "SwiftForms.framework"
|
||||
BlueprintName = "SwiftForms"
|
||||
ReferencedContainer = "container:SwiftFormsApplication.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 = "0CCA342B1B04FBDF006D9666"
|
||||
BuildableName = "SwiftForms.framework"
|
||||
BlueprintName = "SwiftForms"
|
||||
ReferencedContainer = "container:SwiftFormsApplication.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "0CCA342B1B04FBDF006D9666"
|
||||
BuildableName = "SwiftForms.framework"
|
||||
BlueprintName = "SwiftForms"
|
||||
ReferencedContainer = "container:SwiftFormsApplication.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
35
My Mind/Carthage/Checkouts/SwiftForms/SwiftFormsApplication/AppDelegate.swift
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
//
|
||||
// AppDelegate.swift
|
||||
// SwiftForms
|
||||
//
|
||||
// Created by Miguel Angel Ortuno on 20/08/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
@UIApplicationMain
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
|
||||
var window: UIWindow?
|
||||
|
||||
private func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : Any]?) -> Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func applicationWillResignActive(_ application: UIApplication) {
|
||||
}
|
||||
|
||||
func applicationDidEnterBackground(_ application: UIApplication) {
|
||||
}
|
||||
|
||||
func applicationWillEnterForeground(_ application: UIApplication) {
|
||||
}
|
||||
|
||||
func applicationDidBecomeActive(_ application: UIApplication) {
|
||||
}
|
||||
|
||||
func applicationWillTerminate(_ application: UIApplication) {
|
||||
}
|
||||
}
|
||||
|
||||
47
My Mind/Carthage/Checkouts/SwiftForms/SwiftFormsApplication/Base.lproj/Main.storyboard
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="7702" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="2fJ-Vj-Fx4">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7701"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Root View Controller-->
|
||||
<scene sceneID="prn-mK-S9o">
|
||||
<objects>
|
||||
<tableViewController id="cOw-JX-PpI" customClass="ExampleFormViewController" customModule="SwiftFormsApplication" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="Dpr-KM-eKs">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="518"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="cOw-JX-PpI" id="zuU-br-WUC"/>
|
||||
<outlet property="delegate" destination="cOw-JX-PpI" id="2Oh-6L-e8h"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
<navigationItem key="navigationItem" title="Root View Controller" id="W98-Fb-phH"/>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<size key="freeformSize" width="320" height="518"/>
|
||||
</tableViewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="ndw-47-Ukh" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-166" y="423.75"/>
|
||||
</scene>
|
||||
<!--Navigation Controller-->
|
||||
<scene sceneID="4el-7P-abp">
|
||||
<objects>
|
||||
<navigationController id="2fJ-Vj-Fx4" sceneMemberID="viewController">
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<size key="freeformSize" width="320" height="518"/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="l3z-Dv-0Yo">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</navigationBar>
|
||||
<connections>
|
||||
<segue destination="cOw-JX-PpI" kind="relationship" relationship="rootViewController" id="nL3-AH-WsZ"/>
|
||||
</connections>
|
||||
</navigationController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="k9y-Jx-GyC" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-816" y="424"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
BIN
My Mind/Carthage/Checkouts/SwiftForms/SwiftFormsApplication/Example.gif
vendored
Normal file
|
After Width: | Height: | Size: 3.1 MiB |
229
My Mind/Carthage/Checkouts/SwiftForms/SwiftFormsApplication/ExampleFormViewController.swift
vendored
Normal file
@@ -0,0 +1,229 @@
|
||||
//
|
||||
// ExampleFormViewController.swift
|
||||
// SwiftForms
|
||||
//®
|
||||
// Created by Miguel Angel Ortuno on 20/08/14.
|
||||
// Copyright (c) 2014 Miguel Angel Ortuño. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import SwiftForms
|
||||
|
||||
class ExampleFormViewController: FormViewController {
|
||||
|
||||
let pickerOptions = ["One", "Two", "Three"] as [AnyObject]
|
||||
|
||||
struct Static {
|
||||
static let nameTag = "name"
|
||||
static let passwordTag = "password"
|
||||
static let lastNameTag = "lastName"
|
||||
static let jobTag = "job"
|
||||
static let emailTag = "email"
|
||||
static let URLTag = "url"
|
||||
static let phoneTag = "phone"
|
||||
static let enabled = "enabled"
|
||||
static let check = "check"
|
||||
static let segmented = "segmented"
|
||||
static let picker = "picker"
|
||||
static let birthday = "birthday"
|
||||
static let categories = "categories"
|
||||
static let button = "button"
|
||||
static let stepper = "stepper"
|
||||
static let slider = "slider"
|
||||
static let textView = "textview"
|
||||
}
|
||||
|
||||
required init(coder aDecoder: NSCoder) {
|
||||
super.init(coder: aDecoder)
|
||||
self.loadForm()
|
||||
}
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Submit", style: .plain, target: self, action: #selector(ExampleFormViewController.submit(_:)))
|
||||
}
|
||||
|
||||
// MARK: Actions
|
||||
|
||||
@objc func submit(_: UIBarButtonItem!) {
|
||||
|
||||
let message = self.form.formValues().description
|
||||
|
||||
let alertController = UIAlertController(title: "Form output", message: message, preferredStyle: .alert)
|
||||
|
||||
let cancel = UIAlertAction(title: "OK", style: .cancel) { (action) in
|
||||
}
|
||||
|
||||
alertController.addAction(cancel)
|
||||
|
||||
self.present(alertController, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
// MARK: Private interface
|
||||
|
||||
fileprivate func loadForm() {
|
||||
|
||||
let form = FormDescriptor(title: "Example Form")
|
||||
|
||||
let section1 = FormSectionDescriptor(headerTitle: nil, footerTitle: nil)
|
||||
|
||||
var row = FormRowDescriptor(tag: Static.emailTag, type: .email, title: "Email")
|
||||
row.configuration.cell.appearance = ["textField.placeholder" : "john@gmail.com" as AnyObject, "textField.textAlignment" : NSTextAlignment.right.rawValue as AnyObject ]
|
||||
section1.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.passwordTag, type: .password, title: "Password")
|
||||
row.configuration.cell.appearance = ["textField.placeholder" : "Enter password" as AnyObject, "textField.textAlignment" : NSTextAlignment.right.rawValue as AnyObject]
|
||||
section1.rows.append(row)
|
||||
|
||||
let section2 = FormSectionDescriptor(headerTitle: nil, footerTitle: nil)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.nameTag, type: .name, title: "First Name")
|
||||
row.configuration.cell.appearance = ["textField.placeholder" : "e.g. Miguel Ángel" as AnyObject, "textField.textAlignment" : NSTextAlignment.right.rawValue as AnyObject]
|
||||
section2.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.lastNameTag, type: .name, title: "Last Name")
|
||||
row.configuration.cell.appearance = ["textField.placeholder" : "e.g. Ortuño" as AnyObject, "textField.textAlignment" : NSTextAlignment.right.rawValue as AnyObject]
|
||||
section2.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.jobTag, type: .text, title: "Job")
|
||||
row.configuration.cell.appearance = ["textField.placeholder" : "e.g. Entrepreneur" as AnyObject, "textField.textAlignment" : NSTextAlignment.right.rawValue as AnyObject]
|
||||
section2.rows.append(row)
|
||||
|
||||
let section3 = FormSectionDescriptor(headerTitle: nil, footerTitle: nil)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.URLTag, type: .url, title: "URL")
|
||||
row.configuration.cell.appearance = ["textField.placeholder" : "e.g. gethooksapp.com" as AnyObject, "textField.textAlignment" : NSTextAlignment.right.rawValue as AnyObject]
|
||||
section3.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.phoneTag, type: .phone, title: "Phone")
|
||||
row.configuration.cell.appearance = ["textField.placeholder" : "e.g. 0034666777999" as AnyObject, "textField.textAlignment" : NSTextAlignment.right.rawValue as AnyObject]
|
||||
section3.rows.append(row)
|
||||
|
||||
let section4 = FormSectionDescriptor(headerTitle: "An example header title", footerTitle: "An example footer title")
|
||||
|
||||
row = FormRowDescriptor(tag: Static.enabled, type: .booleanSwitch, title: "Enable")
|
||||
section4.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.check, type: .booleanCheck, title: "Doable")
|
||||
section4.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.segmented, type: .segmentedControl, title: "Priority")
|
||||
row.configuration.selection.options = ([0, 1, 2, 3] as [Int]) as [AnyObject]
|
||||
row.configuration.selection.optionTitleClosure = { value in
|
||||
guard let option = value as? Int else { return "" }
|
||||
switch option {
|
||||
case 0:
|
||||
return "None"
|
||||
case 1:
|
||||
return "!"
|
||||
case 2:
|
||||
return "!!"
|
||||
case 3:
|
||||
return "!!!"
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
row.configuration.cell.appearance = ["titleLabel.font" : UIFont.boldSystemFont(ofSize: 30.0), "segmentedControl.tintColor" : UIColor.red]
|
||||
|
||||
section4.rows.append(row)
|
||||
|
||||
let section5 = FormSectionDescriptor(headerTitle: nil, footerTitle: nil)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.picker, type: .picker, title: "Gender")
|
||||
row.configuration.cell.showsInputToolbar = true
|
||||
row.configuration.selection.options = (["F", "M", "U"] as [String]) as [AnyObject]
|
||||
row.configuration.selection.optionTitleClosure = { value in
|
||||
guard let option = value as? String else { return "" }
|
||||
switch option {
|
||||
case "F":
|
||||
return "Female"
|
||||
case "M":
|
||||
return "Male"
|
||||
case "U":
|
||||
return "I'd rather not to say"
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
row.value = "M" as AnyObject
|
||||
|
||||
section5.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.birthday, type: .date, title: "Birthday")
|
||||
row.configuration.cell.showsInputToolbar = true
|
||||
section5.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.categories, type: .multipleSelector, title: "Categories")
|
||||
row.configuration.selection.options = ([0, 1, 2, 3, 4] as [Int]) as [AnyObject]
|
||||
row.configuration.selection.allowsMultipleSelection = true
|
||||
row.configuration.selection.optionTitleClosure = { value in
|
||||
guard let option = value as? Int else { return "" }
|
||||
switch option {
|
||||
case 0:
|
||||
return "Restaurant"
|
||||
case 1:
|
||||
return "Pub"
|
||||
case 2:
|
||||
return "Shop"
|
||||
case 3:
|
||||
return "Hotel"
|
||||
case 4:
|
||||
return "Camping"
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
section5.rows.append(row)
|
||||
|
||||
let section6 = FormSectionDescriptor(headerTitle: "Stepper & Slider", footerTitle: nil)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.stepper, type: .stepper, title: "Step count")
|
||||
row.configuration.stepper.maximumValue = 200.0
|
||||
row.configuration.stepper.minimumValue = 20.0
|
||||
row.configuration.stepper.steps = 2.0
|
||||
section6.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.slider, type: .slider, title: "Slider")
|
||||
row.configuration.stepper.maximumValue = 200.0
|
||||
row.configuration.stepper.minimumValue = 20.0
|
||||
row.configuration.stepper.steps = 2.0
|
||||
row.value = 0.5 as AnyObject
|
||||
row.configuration.cell.appearance = ["titleLabel.textColor": UIColor.black,
|
||||
"sliderView.tintColor": UIColor.red]
|
||||
section6.rows.append(row)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.picker, type: .picker, title: "Favorite")
|
||||
row.configuration.cell.showsInputToolbar = true
|
||||
row.configuration.selection.options = pickerOptions
|
||||
row.configuration.selection.optionTitleClosure = { value in
|
||||
guard let option = value as? String else { return "" }
|
||||
return option
|
||||
}
|
||||
row.value = pickerOptions[0] as AnyObject
|
||||
row.configuration.cell.appearance = [
|
||||
"valueLabel.accessibilityIdentifier": "PickerTextFied" as AnyObject]
|
||||
section6.rows.append(row)
|
||||
|
||||
let section7 = FormSectionDescriptor(headerTitle: "Multiline TextView", footerTitle: nil)
|
||||
row = FormRowDescriptor(tag: Static.textView, type: .multilineText, title: "Notes")
|
||||
row.configuration.cell.appearance = ["textField.textColor": UIColor.blue,
|
||||
"textField.text": "This is a non-text view" as AnyObject]
|
||||
section7.rows.append(row)
|
||||
|
||||
let section8 = FormSectionDescriptor(headerTitle: nil, footerTitle: nil)
|
||||
|
||||
row = FormRowDescriptor(tag: Static.button, type: .button, title: "Dismiss")
|
||||
row.configuration.button.didSelectClosure = { _ in
|
||||
self.view.endEditing(true)
|
||||
}
|
||||
section8.rows.append(row)
|
||||
|
||||
form.sections = [section1, section2, section3, section4, section5, section6, section7, section8]
|
||||
|
||||
self.form = form
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "29x29",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "40x40",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "60x60",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "20x20",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "20x20",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "29x29",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "29x29",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "40x40",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "40x40",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "76x76",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "76x76",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"size" : "83.5x83.5",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ios-marketing",
|
||||
"size" : "1024x1024",
|
||||
"scale" : "1x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,143 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "8.0",
|
||||
"subtype" : "736h",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "8.0",
|
||||
"subtype" : "736h",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "8.0",
|
||||
"subtype" : "667h",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"extent" : "full-screen",
|
||||
"idiom" : "iphone",
|
||||
"subtype" : "retina4",
|
||||
"filename" : "iphone5_splash.png",
|
||||
"minimum-system-version" : "7.0",
|
||||
"orientation" : "portrait",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"extent" : "full-screen",
|
||||
"subtype" : "retina4",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "to-status-bar",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "to-status-bar",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "to-status-bar",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "to-status-bar",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"orientation" : "landscape",
|
||||
"idiom" : "ipad",
|
||||
"extent" : "full-screen",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 12 KiB |
38
My Mind/Carthage/Checkouts/SwiftForms/SwiftFormsApplication/Info.plist
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
<?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>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>Launch</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
43
My Mind/Carthage/Checkouts/SwiftForms/SwiftFormsApplication/Launch.storyboard
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="7702" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="9SR-7b-Iwg">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7701"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Navigation Controller-->
|
||||
<scene sceneID="zNr-CX-2hl">
|
||||
<objects>
|
||||
<navigationController id="9SR-7b-Iwg" sceneMemberID="viewController">
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="boM-fp-avT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</navigationBar>
|
||||
<connections>
|
||||
<segue destination="zU2-zy-5lE" kind="relationship" relationship="rootViewController" id="RaG-Zs-crm"/>
|
||||
</connections>
|
||||
</navigationController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="rIS-OV-1jL" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-664" y="297"/>
|
||||
</scene>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="9pp-lP-Cyp">
|
||||
<objects>
|
||||
<viewController id="zU2-zy-5lE" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="kba-MB-gng"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="cvL-oJ-V4X"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="2CP-3f-vjZ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<navigationItem key="navigationItem" id="49I-cM-xVU"/>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="Ywx-qZ-bIj" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="358" y="297"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
BIN
My Mind/Carthage/Checkouts/SwiftForms/SwiftFormsApplication/Screenshot.png
vendored
Normal file
|
After Width: | Height: | Size: 65 KiB |
23
My Mind/Carthage/Checkouts/SwiftForms/SwiftFormsApplication/ViewController.swift
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
//
|
||||
// ViewController.swift
|
||||
// SwiftFormsApplication
|
||||
//
|
||||
// Created by Miguel Angel Ortuno Ortuno on 14/5/15.
|
||||
// Copyright (c) 2015 Miguel Angel Ortuno Ortuno. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
class ViewController: UIViewController {
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
// Do any additional setup after loading the view, typically from a nib.
|
||||
}
|
||||
|
||||
override func didReceiveMemoryWarning() {
|
||||
super.didReceiveMemoryWarning()
|
||||
// Dispose of any resources that can be recreated.
|
||||
}
|
||||
}
|
||||
|
||||
746
My Mind/My Mind.xcodeproj/project.pbxproj
Normal file
@@ -0,0 +1,746 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 50;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
54B35A13608BADDA46E984A4 /* Pods_My_MindTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F4CD8F77375199A310F844F3 /* Pods_My_MindTests.framework */; };
|
||||
5F65059821D31E6100EEF460 /* OnBoardingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F65059721D31E6100EEF460 /* OnBoardingController.swift */; };
|
||||
5FB915EA21D447A400756E3E /* LoginInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FB915E921D447A400756E3E /* LoginInterfaces.swift */; };
|
||||
5FDA289221D3199500670060 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FDA289121D3199500670060 /* AppDelegate.swift */; };
|
||||
5FDA289921D3199500670060 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5FDA289721D3199500670060 /* Main.storyboard */; };
|
||||
5FDA289B21D3199700670060 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5FDA289A21D3199700670060 /* Assets.xcassets */; };
|
||||
5FDA289E21D3199700670060 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5FDA289C21D3199700670060 /* LaunchScreen.storyboard */; };
|
||||
5FDA28A921D3199700670060 /* My_MindTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FDA28A821D3199700670060 /* My_MindTests.swift */; };
|
||||
5FDA28B421D3199700670060 /* My_MindUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FDA28B321D3199700670060 /* My_MindUITests.swift */; };
|
||||
93464BBFC2118E9B8957BA52 /* Pods_My_Mind.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29D9F228DBCF906382669F17 /* Pods_My_Mind.framework */; };
|
||||
EA9E00CE71599AECCADA6B33 /* Pods_My_MindUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50DA9DC03A901B75E8E4B3A4 /* Pods_My_MindUITests.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
5FDA28A521D3199700670060 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 5FDA288621D3199500670060 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 5FDA288D21D3199500670060;
|
||||
remoteInfo = "My Mind";
|
||||
};
|
||||
5FDA28B021D3199700670060 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 5FDA288621D3199500670060 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 5FDA288D21D3199500670060;
|
||||
remoteInfo = "My Mind";
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
0551EF0922602C8062E5541B /* Pods-My MindTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-My MindTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-My MindTests/Pods-My MindTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
1042D1A5D303E942D4AFE1C1 /* Pods-My Mind.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-My Mind.debug.xcconfig"; path = "Pods/Target Support Files/Pods-My Mind/Pods-My Mind.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
29D9F228DBCF906382669F17 /* Pods_My_Mind.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_My_Mind.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
50DA9DC03A901B75E8E4B3A4 /* Pods_My_MindUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_My_MindUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
523A962748FE07E7626065C8 /* Pods-My MindTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-My MindTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-My MindTests/Pods-My MindTests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
5F65059721D31E6100EEF460 /* OnBoardingController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnBoardingController.swift; sourceTree = "<group>"; };
|
||||
5FB915E921D447A400756E3E /* LoginInterfaces.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LoginInterfaces.swift; path = "/Users/alexanderdavis/Documents/GitHub/My-Mind-2.0/My Mind/My Mind/LoginInterfaces.swift"; sourceTree = "<absolute>"; };
|
||||
5FDA288E21D3199500670060 /* My Mind.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "My Mind.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5FDA289121D3199500670060 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
5FDA289821D3199500670060 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
5FDA289A21D3199700670060 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
5FDA289D21D3199700670060 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
5FDA289F21D3199700670060 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
5FDA28A421D3199700670060 /* My MindTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "My MindTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5FDA28A821D3199700670060 /* My_MindTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = My_MindTests.swift; sourceTree = "<group>"; };
|
||||
5FDA28AA21D3199700670060 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
5FDA28AF21D3199700670060 /* My MindUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "My MindUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5FDA28B321D3199700670060 /* My_MindUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = My_MindUITests.swift; sourceTree = "<group>"; };
|
||||
5FDA28B521D3199700670060 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
A7722539AB57A2EBEE52BDF6 /* Pods-My Mind.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-My Mind.release.xcconfig"; path = "Pods/Target Support Files/Pods-My Mind/Pods-My Mind.release.xcconfig"; sourceTree = "<group>"; };
|
||||
DA191761ED3CD7B6B2626140 /* Pods-My MindUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-My MindUITests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-My MindUITests/Pods-My MindUITests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
E703D2ACFC7C1D9097E40E05 /* Pods-My MindUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-My MindUITests.release.xcconfig"; path = "Pods/Target Support Files/Pods-My MindUITests/Pods-My MindUITests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
F4CD8F77375199A310F844F3 /* Pods_My_MindTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_My_MindTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
5FDA288B21D3199500670060 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
93464BBFC2118E9B8957BA52 /* Pods_My_Mind.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5FDA28A121D3199700670060 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
54B35A13608BADDA46E984A4 /* Pods_My_MindTests.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5FDA28AC21D3199700670060 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
EA9E00CE71599AECCADA6B33 /* Pods_My_MindUITests.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
5FDA288521D3199500670060 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FDA289021D3199500670060 /* My Mind */,
|
||||
5FDA28A721D3199700670060 /* My MindTests */,
|
||||
5FDA28B221D3199700670060 /* My MindUITests */,
|
||||
5FDA288F21D3199500670060 /* Products */,
|
||||
AD0A75B5A0BB6EF6862F0834 /* Pods */,
|
||||
71AD7FCFD401872222F06230 /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FDA288F21D3199500670060 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FDA288E21D3199500670060 /* My Mind.app */,
|
||||
5FDA28A421D3199700670060 /* My MindTests.xctest */,
|
||||
5FDA28AF21D3199700670060 /* My MindUITests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FDA289021D3199500670060 /* My Mind */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FB915E921D447A400756E3E /* LoginInterfaces.swift */,
|
||||
5FDA289121D3199500670060 /* AppDelegate.swift */,
|
||||
5FDA289721D3199500670060 /* Main.storyboard */,
|
||||
5F65059721D31E6100EEF460 /* OnBoardingController.swift */,
|
||||
5FDA289A21D3199700670060 /* Assets.xcassets */,
|
||||
5FDA289C21D3199700670060 /* LaunchScreen.storyboard */,
|
||||
5FDA289F21D3199700670060 /* Info.plist */,
|
||||
);
|
||||
path = "My Mind";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FDA28A721D3199700670060 /* My MindTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FDA28A821D3199700670060 /* My_MindTests.swift */,
|
||||
5FDA28AA21D3199700670060 /* Info.plist */,
|
||||
);
|
||||
path = "My MindTests";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FDA28B221D3199700670060 /* My MindUITests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5FDA28B321D3199700670060 /* My_MindUITests.swift */,
|
||||
5FDA28B521D3199700670060 /* Info.plist */,
|
||||
);
|
||||
path = "My MindUITests";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
71AD7FCFD401872222F06230 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
29D9F228DBCF906382669F17 /* Pods_My_Mind.framework */,
|
||||
F4CD8F77375199A310F844F3 /* Pods_My_MindTests.framework */,
|
||||
50DA9DC03A901B75E8E4B3A4 /* Pods_My_MindUITests.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AD0A75B5A0BB6EF6862F0834 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1042D1A5D303E942D4AFE1C1 /* Pods-My Mind.debug.xcconfig */,
|
||||
A7722539AB57A2EBEE52BDF6 /* Pods-My Mind.release.xcconfig */,
|
||||
0551EF0922602C8062E5541B /* Pods-My MindTests.debug.xcconfig */,
|
||||
523A962748FE07E7626065C8 /* Pods-My MindTests.release.xcconfig */,
|
||||
DA191761ED3CD7B6B2626140 /* Pods-My MindUITests.debug.xcconfig */,
|
||||
E703D2ACFC7C1D9097E40E05 /* Pods-My MindUITests.release.xcconfig */,
|
||||
);
|
||||
name = Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
5FDA288D21D3199500670060 /* My Mind */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 5FDA28B821D3199700670060 /* Build configuration list for PBXNativeTarget "My Mind" */;
|
||||
buildPhases = (
|
||||
2633DBEDBFD6C0700D6749D3 /* [CP] Check Pods Manifest.lock */,
|
||||
5FDA288A21D3199500670060 /* Sources */,
|
||||
5FDA288B21D3199500670060 /* Frameworks */,
|
||||
5FDA288C21D3199500670060 /* Resources */,
|
||||
CC22E31517B639AD5E6E434B /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "My Mind";
|
||||
productName = "My Mind";
|
||||
productReference = 5FDA288E21D3199500670060 /* My Mind.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
5FDA28A321D3199700670060 /* My MindTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 5FDA28BB21D3199700670060 /* Build configuration list for PBXNativeTarget "My MindTests" */;
|
||||
buildPhases = (
|
||||
CE1414E2B13A7E94E867D9F2 /* [CP] Check Pods Manifest.lock */,
|
||||
5FDA28A021D3199700670060 /* Sources */,
|
||||
5FDA28A121D3199700670060 /* Frameworks */,
|
||||
5FDA28A221D3199700670060 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
5FDA28A621D3199700670060 /* PBXTargetDependency */,
|
||||
);
|
||||
name = "My MindTests";
|
||||
productName = "My MindTests";
|
||||
productReference = 5FDA28A421D3199700670060 /* My MindTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
5FDA28AE21D3199700670060 /* My MindUITests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 5FDA28BE21D3199700670060 /* Build configuration list for PBXNativeTarget "My MindUITests" */;
|
||||
buildPhases = (
|
||||
ACD77EA174E5E770816ACFB8 /* [CP] Check Pods Manifest.lock */,
|
||||
5FDA28AB21D3199700670060 /* Sources */,
|
||||
5FDA28AC21D3199700670060 /* Frameworks */,
|
||||
5FDA28AD21D3199700670060 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
5FDA28B121D3199700670060 /* PBXTargetDependency */,
|
||||
);
|
||||
name = "My MindUITests";
|
||||
productName = "My MindUITests";
|
||||
productReference = 5FDA28AF21D3199700670060 /* My MindUITests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.ui-testing";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
5FDA288621D3199500670060 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 1010;
|
||||
LastUpgradeCheck = 1010;
|
||||
ORGANIZATIONNAME = "Alexander Davis";
|
||||
TargetAttributes = {
|
||||
5FDA288D21D3199500670060 = {
|
||||
CreatedOnToolsVersion = 10.1;
|
||||
};
|
||||
5FDA28A321D3199700670060 = {
|
||||
CreatedOnToolsVersion = 10.1;
|
||||
TestTargetID = 5FDA288D21D3199500670060;
|
||||
};
|
||||
5FDA28AE21D3199700670060 = {
|
||||
CreatedOnToolsVersion = 10.1;
|
||||
TestTargetID = 5FDA288D21D3199500670060;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 5FDA288921D3199500670060 /* Build configuration list for PBXProject "My Mind" */;
|
||||
compatibilityVersion = "Xcode 9.3";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 5FDA288521D3199500670060;
|
||||
productRefGroup = 5FDA288F21D3199500670060 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
5FDA288D21D3199500670060 /* My Mind */,
|
||||
5FDA28A321D3199700670060 /* My MindTests */,
|
||||
5FDA28AE21D3199700670060 /* My MindUITests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
5FDA288C21D3199500670060 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5FDA289E21D3199700670060 /* LaunchScreen.storyboard in Resources */,
|
||||
5FDA289B21D3199700670060 /* Assets.xcassets in Resources */,
|
||||
5FDA289921D3199500670060 /* Main.storyboard in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5FDA28A221D3199700670060 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5FDA28AD21D3199700670060 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
2633DBEDBFD6C0700D6749D3 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-My Mind-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
ACD77EA174E5E770816ACFB8 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-My MindUITests-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
CC22E31517B639AD5E6E434B /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${SRCROOT}/Pods/Target Support Files/Pods-My Mind/Pods-My Mind-frameworks.sh",
|
||||
"${BUILT_PRODUCTS_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/GoogleUtilities/GoogleUtilities.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/Protobuf/Protobuf.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/SwiftForms/SwiftForms.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/leveldb-library/leveldb.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMSessionFetcher.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleUtilities.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Protobuf.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftForms.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/leveldb.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/nanopb.framework",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-My Mind/Pods-My Mind-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
CE1414E2B13A7E94E867D9F2 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-My MindTests-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
5FDA288A21D3199500670060 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5F65059821D31E6100EEF460 /* OnBoardingController.swift in Sources */,
|
||||
5FDA289221D3199500670060 /* AppDelegate.swift in Sources */,
|
||||
5FB915EA21D447A400756E3E /* LoginInterfaces.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5FDA28A021D3199700670060 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5FDA28A921D3199700670060 /* My_MindTests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
5FDA28AB21D3199700670060 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5FDA28B421D3199700670060 /* My_MindUITests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
5FDA28A621D3199700670060 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 5FDA288D21D3199500670060 /* My Mind */;
|
||||
targetProxy = 5FDA28A521D3199700670060 /* PBXContainerItemProxy */;
|
||||
};
|
||||
5FDA28B121D3199700670060 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 5FDA288D21D3199500670060 /* My Mind */;
|
||||
targetProxy = 5FDA28B021D3199700670060 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
5FDA289721D3199500670060 /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
5FDA289821D3199500670060 /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5FDA289C21D3199700670060 /* LaunchScreen.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
5FDA289D21D3199700670060 /* Base */,
|
||||
);
|
||||
name = LaunchScreen.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
5FDA28B621D3199700670060 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
5FDA28B721D3199700670060 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
5FDA28B921D3199700670060 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 1042D1A5D303E942D4AFE1C1 /* Pods-My Mind.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 28CC8SCVUN;
|
||||
INFOPLIST_FILE = "My Mind/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "ADCM.My-Mind";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
5FDA28BA21D3199700670060 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = A7722539AB57A2EBEE52BDF6 /* Pods-My Mind.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 28CC8SCVUN;
|
||||
INFOPLIST_FILE = "My Mind/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "ADCM.My-Mind";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
5FDA28BC21D3199700670060 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 0551EF0922602C8062E5541B /* Pods-My MindTests.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 28CC8SCVUN;
|
||||
INFOPLIST_FILE = "My MindTests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "ADCM.My-MindTests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/My Mind.app/My Mind";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
5FDA28BD21D3199700670060 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 523A962748FE07E7626065C8 /* Pods-My MindTests.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 28CC8SCVUN;
|
||||
INFOPLIST_FILE = "My MindTests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "ADCM.My-MindTests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/My Mind.app/My Mind";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
5FDA28BF21D3199700670060 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = DA191761ED3CD7B6B2626140 /* Pods-My MindUITests.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 28CC8SCVUN;
|
||||
INFOPLIST_FILE = "My MindUITests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "ADCM.My-MindUITests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_TARGET_NAME = "My Mind";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
5FDA28C021D3199700670060 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = E703D2ACFC7C1D9097E40E05 /* Pods-My MindUITests.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 28CC8SCVUN;
|
||||
INFOPLIST_FILE = "My MindUITests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "ADCM.My-MindUITests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 4.2;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_TARGET_NAME = "My Mind";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
5FDA288921D3199500670060 /* Build configuration list for PBXProject "My Mind" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
5FDA28B621D3199700670060 /* Debug */,
|
||||
5FDA28B721D3199700670060 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
5FDA28B821D3199700670060 /* Build configuration list for PBXNativeTarget "My Mind" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
5FDA28B921D3199700670060 /* Debug */,
|
||||
5FDA28BA21D3199700670060 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
5FDA28BB21D3199700670060 /* Build configuration list for PBXNativeTarget "My MindTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
5FDA28BC21D3199700670060 /* Debug */,
|
||||
5FDA28BD21D3199700670060 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
5FDA28BE21D3199700670060 /* Build configuration list for PBXNativeTarget "My MindUITests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
5FDA28BF21D3199700670060 /* Debug */,
|
||||
5FDA28C021D3199700670060 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 5FDA288621D3199500670060 /* Project object */;
|
||||
}
|
||||
7
My Mind/My Mind.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:My Mind.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?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>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?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>My Mind.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>14</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
13
My Mind/My Mind.xcworkspace/contents.xcworkspacedata
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:/Users/alexanderdavis/Documents/GitHub/My-Mind-2.0/My Mind/My Mind/LoginInterfaces.swift">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:My Mind.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:Pods/Pods.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?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>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
BIN
My Mind/My Mind.xcworkspace/xcuserdata/alexanderdavis.xcuserdatad/UserInterfaceState.xcuserstate
generated
Normal file
BIN
My Mind/My Mind/.DS_Store
vendored
Normal file
46
My Mind/My Mind/AppDelegate.swift
Normal file
@@ -0,0 +1,46 @@
|
||||
//
|
||||
// AppDelegate.swift
|
||||
// My Mind
|
||||
//
|
||||
// Created by Alexander Davis on 26/12/2018.
|
||||
// Copyright © 2018 Alexander Davis. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
@UIApplicationMain
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
|
||||
var window: UIWindow?
|
||||
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
||||
// Override point for customization after application launch.
|
||||
return true
|
||||
}
|
||||
|
||||
func applicationWillResignActive(_ application: UIApplication) {
|
||||
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
|
||||
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
|
||||
}
|
||||
|
||||
func applicationDidEnterBackground(_ application: UIApplication) {
|
||||
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
|
||||
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
|
||||
}
|
||||
|
||||
func applicationWillEnterForeground(_ application: UIApplication) {
|
||||
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
|
||||
}
|
||||
|
||||
func applicationDidBecomeActive(_ application: UIApplication) {
|
||||
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
|
||||
}
|
||||
|
||||
func applicationWillTerminate(_ application: UIApplication) {
|
||||
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
157
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Contents.json
Executable file
@@ -0,0 +1,157 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-20x20@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-20x20@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-29x29@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-29x29@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-29x29@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-40x40@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-40x40@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "57x57",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-57x57@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "57x57",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-57x57@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "60x60",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-60x60@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "60x60",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-60x60@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-20x20@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-20x20@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-29x29@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-29x29@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-40x40@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-40x40@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "50x50",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-Small-50x50@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "50x50",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-Small-50x50@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "72x72",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-72x72@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "72x72",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-72x72@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "76x76",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-76x76@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "76x76",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-76x76@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "83.5x83.5",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-83.5x83.5@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "ios-marketing",
|
||||
"size" : "1024x1024",
|
||||
"scale" : "1x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
Executable file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
Executable file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
Executable file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
Executable file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
Executable file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
Executable file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
Executable file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
Executable file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
Executable file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png
Executable file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png
Executable file
|
After Width: | Height: | Size: 5.1 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
Executable file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
Executable file
|
After Width: | Height: | Size: 10 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png
Executable file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png
Executable file
|
After Width: | Height: | Size: 7.2 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
Executable file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
Executable file
|
After Width: | Height: | Size: 7.8 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
Executable file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-Small-50x50@1x.png
Executable file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
My Mind/My Mind/Assets.xcassets/AppIcon.appiconset/Icon-Small-50x50@2x.png
Executable file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
My Mind/My Mind/Assets.xcassets/Appointments.imageset/Clock-50 (1).png
vendored
Executable file
|
After Width: | Height: | Size: 15 KiB |
21
My Mind/My Mind/Assets.xcassets/Appointments.imageset/Contents.json
vendored
Executable file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "Clock-50 (1).png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
BIN
My Mind/My Mind/Assets.xcassets/Back.imageset/Back-50.png
vendored
Executable file
|
After Width: | Height: | Size: 14 KiB |
21
My Mind/My Mind/Assets.xcassets/Back.imageset/Contents.json
vendored
Executable file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "Back-50.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
6
My Mind/My Mind/Assets.xcassets/Contents.json
Executable file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
23
My Mind/My Mind/Assets.xcassets/CustomEvent.imageset/Contents.json
vendored
Executable file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "graph150.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "graph300.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "graph450.png",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
BIN
My Mind/My Mind/Assets.xcassets/CustomEvent.imageset/graph150.png
vendored
Executable file
|
After Width: | Height: | Size: 20 KiB |