diff --git a/MonsterCards.xcodeproj/project.pbxproj b/MonsterCards.xcodeproj/project.pbxproj index 1321278..3a2a671 100644 --- a/MonsterCards.xcodeproj/project.pbxproj +++ b/MonsterCards.xcodeproj/project.pbxproj @@ -29,6 +29,7 @@ E25BD60725036CFA007B04EF /* Action.m in Sources */ = {isa = PBXBuildFile; fileRef = E25BD60625036CFA007B04EF /* Action.m */; }; E26A73572511BA1900C5677E /* HTMLHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = E26A73562511BA1900C5677E /* HTMLHelper.m */; }; E278E21B250DFFCA00D3EC0E /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E278E21A250DFFCA00D3EC0E /* Images.xcassets */; }; + E2805514251E03BE00C87527 /* MCBooleanFieldTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E2805513251E03BE00C87527 /* MCBooleanFieldTableViewCell.m */; }; E288744A25148BA0005CA948 /* MCFormFieldConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = E288744925148BA0005CA948 /* MCFormFieldConstants.m */; }; E2D3E3B0250827110052A8EC /* EditMonsterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E2D3E3AF250827110052A8EC /* EditMonsterViewController.m */; }; E2D3E3B42508C3360052A8EC /* MCShortStringFieldTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E2D3E3B32508C3360052A8EC /* MCShortStringFieldTableViewCell.m */; }; @@ -113,6 +114,8 @@ E26A73552511BA1900C5677E /* HTMLHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLHelper.h; sourceTree = ""; }; E26A73562511BA1900C5677E /* HTMLHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HTMLHelper.m; sourceTree = ""; }; E278E21A250DFFCA00D3EC0E /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + E2805512251E03BE00C87527 /* MCBooleanFieldTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MCBooleanFieldTableViewCell.h; sourceTree = ""; }; + E2805513251E03BE00C87527 /* MCBooleanFieldTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MCBooleanFieldTableViewCell.m; sourceTree = ""; }; E288744925148BA0005CA948 /* MCFormFieldConstants.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MCFormFieldConstants.m; sourceTree = ""; }; E288744E25148BAD005CA948 /* MCFormFieldConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MCFormFieldConstants.h; sourceTree = ""; }; E2D3E3AE250827110052A8EC /* EditMonsterViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EditMonsterViewController.h; sourceTree = ""; }; @@ -277,6 +280,8 @@ E20C315325146708003AB1AA /* MCIntegerFieldTableViewCell.m */, E2D3E3B22508C3360052A8EC /* MCShortStringFieldTableViewCell.h */, E2D3E3B32508C3360052A8EC /* MCShortStringFieldTableViewCell.m */, + E2805512251E03BE00C87527 /* MCBooleanFieldTableViewCell.h */, + E2805513251E03BE00C87527 /* MCBooleanFieldTableViewCell.m */, ); path = FormFields; sourceTree = ""; @@ -613,6 +618,7 @@ E25BD60425036CF0007B04EF /* Ability.m in Sources */, E20D032E25031BEF00FB6E43 /* CollectionsViewController.m in Sources */, E26A73572511BA1900C5677E /* HTMLHelper.m in Sources */, + E2805514251E03BE00C87527 /* MCBooleanFieldTableViewCell.m in Sources */, E25BD5F5250352C4007B04EF /* Monster.m in Sources */, E25BD5F8250368A8007B04EF /* SavingThrow.m in Sources */, E2F7248C25005E8A007D87ED /* main.m in Sources */, diff --git a/MonsterCards/Base.lproj/Main.storyboard b/MonsterCards/Base.lproj/Main.storyboard index 83e1d55..6d306a4 100644 --- a/MonsterCards/Base.lproj/Main.storyboard +++ b/MonsterCards/Base.lproj/Main.storyboard @@ -348,6 +348,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MonsterCards/Views/FormFields/MCBooleanFieldTableViewCell.h b/MonsterCards/Views/FormFields/MCBooleanFieldTableViewCell.h new file mode 100644 index 0000000..4c8efcd --- /dev/null +++ b/MonsterCards/Views/FormFields/MCBooleanFieldTableViewCell.h @@ -0,0 +1,26 @@ +// +// MCBooleanFieldTableViewCell.h +// MonsterCards +// +// Created by Tom Hicks on 9/25/20. +// Copyright © 2020 Tom Hicks. All rights reserved. +// + +#import +#import "MCFormFieldDelegate.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MCBooleanFieldTableViewCell : UITableViewCell + +@property NSString* identifier; +@property NSString* label; +@property BOOL value; + +@property (weak, nonatomic) id delegate; +@property (weak, nonatomic) IBOutlet UILabel *labelView; +@property (weak, nonatomic) IBOutlet UISwitch *switchView; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MonsterCards/Views/FormFields/MCBooleanFieldTableViewCell.m b/MonsterCards/Views/FormFields/MCBooleanFieldTableViewCell.m new file mode 100644 index 0000000..62bb9e3 --- /dev/null +++ b/MonsterCards/Views/FormFields/MCBooleanFieldTableViewCell.m @@ -0,0 +1,58 @@ +// +// MCBooleanFieldTableViewCell.m +// MonsterCards +// +// Created by Tom Hicks on 9/25/20. +// Copyright © 2020 Tom Hicks. All rights reserved. +// + +#import "MCBooleanFieldTableViewCell.h" + +@implementation MCBooleanFieldTableViewCell + +@synthesize value = _value; + +- (void)setValue:(BOOL)value { + if (value != _value) { + _value = value; + if (self.switchView) { + self.switchView.on = _value; + } + } +} + +- (BOOL)value { + return _value; +} + +@synthesize label = _label; + +- (void)setLabel:(NSString*)label { + if (![_label isEqualToString:label]) { + _label = label; + if (self.labelView) { + self.labelView.text = label; + } + } +} + +- (NSString*)label { + return _label; +} + +- (void)awakeFromNib { + [super awakeFromNib]; + self.switchView.on = self.value; + self.labelView.text = self.label; +} + +- (IBAction)valueChanged:(id)sender { + self.value = self.switchView.on; + if (self.delegate != nil) { + [self.delegate editableValueDidChange:[NSNumber numberWithBool:self.value] + forIdentifier:self.identifier + andType:kMCFieldValueTypeBoolean]; + } +} + +@end diff --git a/MonsterCards/Views/FormFields/MCFormFieldConstants.h b/MonsterCards/Views/FormFields/MCFormFieldConstants.h index d5dbd0f..c8e9a9e 100644 --- a/MonsterCards/Views/FormFields/MCFormFieldConstants.h +++ b/MonsterCards/Views/FormFields/MCFormFieldConstants.h @@ -11,5 +11,6 @@ extern NSString* const kMCFieldValueTypeInteger; extern NSString* const kMCFieldValueTypeString; +extern NSString* const kMCFieldValueTypeBoolean; #endif /* MCFormFieldConstants_h */ diff --git a/MonsterCards/Views/FormFields/MCFormFieldConstants.m b/MonsterCards/Views/FormFields/MCFormFieldConstants.m index 809a712..f2baa11 100644 --- a/MonsterCards/Views/FormFields/MCFormFieldConstants.m +++ b/MonsterCards/Views/FormFields/MCFormFieldConstants.m @@ -11,3 +11,4 @@ NSString* const kMCFieldValueTypeInteger = @"Integer"; NSString* const kMCFieldValueTypeString = @"String"; +NSString* const kMCFieldValueTypeBoolean = @"Boolean"; diff --git a/MonsterCards/Views/FormFields/MCIntegerFieldTableViewCell.m b/MonsterCards/Views/FormFields/MCIntegerFieldTableViewCell.m index ae8a107..1ac7204 100644 --- a/MonsterCards/Views/FormFields/MCIntegerFieldTableViewCell.m +++ b/MonsterCards/Views/FormFields/MCIntegerFieldTableViewCell.m @@ -66,4 +66,5 @@ - (IBAction)stepperValueChanged:(id)sender { self.value = self.stepper.value; } + @end