Add validations example

This commit is contained in:
Roman Efimov
2013-08-22 10:47:58 -05:00
parent 805e563a88
commit 86c5fe879b
5 changed files with 96 additions and 6 deletions

View File

@@ -45,6 +45,7 @@
30B00D6117C56EEF0010D439 /* REEmailValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B00D5917C56EEF0010D439 /* REEmailValidator.m */; };
30B00D6217C56EEF0010D439 /* RELengthValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B00D5B17C56EEF0010D439 /* RELengthValidator.m */; };
30B00D6317C56EEF0010D439 /* REPresenceValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B00D5D17C56EEF0010D439 /* REPresenceValidator.m */; };
30B00D7A17C667A90010D439 /* ValidationsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B00D7917C667A90010D439 /* ValidationsViewController.m */; };
30D1C7D617AC08F4001F731C /* First_Alt@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 30D1C7D217AC08F3001F731C /* First_Alt@2x.png */; };
30D1C7D717AC08F4001F731C /* Last_Alt@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 30D1C7D317AC08F3001F731C /* Last_Alt@2x.png */; };
30D1C7D817AC08F4001F731C /* Middle_Alt@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 30D1C7D417AC08F3001F731C /* Middle_Alt@2x.png */; };
@@ -153,6 +154,8 @@
30B00D5B17C56EEF0010D439 /* RELengthValidator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RELengthValidator.m; sourceTree = "<group>"; };
30B00D5C17C56EEF0010D439 /* REPresenceValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = REPresenceValidator.h; sourceTree = "<group>"; };
30B00D5D17C56EEF0010D439 /* REPresenceValidator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = REPresenceValidator.m; sourceTree = "<group>"; };
30B00D7817C667A90010D439 /* ValidationsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ValidationsViewController.h; sourceTree = "<group>"; };
30B00D7917C667A90010D439 /* ValidationsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ValidationsViewController.m; sourceTree = "<group>"; };
30D1C7D217AC08F3001F731C /* First_Alt@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "First_Alt@2x.png"; path = "Resources/First_Alt@2x.png"; sourceTree = "<group>"; };
30D1C7D317AC08F3001F731C /* Last_Alt@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Last_Alt@2x.png"; path = "Resources/Last_Alt@2x.png"; sourceTree = "<group>"; };
30D1C7D417AC08F3001F731C /* Middle_Alt@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Middle_Alt@2x.png"; path = "Resources/Middle_Alt@2x.png"; sourceTree = "<group>"; };
@@ -268,6 +271,8 @@
303D967117B7CDE300A418F3 /* XIBTestViewController.m */,
30E5F50A17BBD163005CF1FE /* IndexedListViewController.h */,
30E5F50B17BBD163005CF1FE /* IndexedListViewController.m */,
30B00D7817C667A90010D439 /* ValidationsViewController.h */,
30B00D7917C667A90010D439 /* ValidationsViewController.m */,
);
path = Controllers;
sourceTree = "<group>";
@@ -645,6 +650,7 @@
30B00D6117C56EEF0010D439 /* REEmailValidator.m in Sources */,
30B00D6217C56EEF0010D439 /* RELengthValidator.m in Sources */,
30B00D6317C56EEF0010D439 /* REPresenceValidator.m in Sources */,
30B00D7A17C667A90010D439 /* ValidationsViewController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View File

@@ -14,6 +14,7 @@
#import "StylingViewController.h"
#import "XIBTestViewController.h"
#import "IndexedListViewController.h"
#import "ValidationsViewController.h"
@interface RootViewController ()
@@ -71,6 +72,11 @@
[item deselectRowAnimated:YES];
[weakSelf.navigationController pushViewController:[[IndexedListViewController alloc] initWithStyle:UITableViewStylePlain] animated:YES];
}]];
[section addItem:[RETableViewItem itemWithTitle:@"Validations" accessoryType:UITableViewCellAccessoryDisclosureIndicator selectionHandler:^(RETableViewItem *item) {
[item deselectRowAnimated:YES];
[weakSelf.navigationController pushViewController:[[ValidationsViewController alloc] initWithStyle:UITableViewStyleGrouped] animated:YES];
}]];
}
@end

View File

@@ -0,0 +1,16 @@
//
// ValidationsViewController.h
// RETableViewManagerExample
//
// Created by Roman Efimov on 8/22/13.
// Copyright (c) 2013 Roman Efimov. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "RETableViewManager.h"
@interface ValidationsViewController : UITableViewController
@property (strong, readonly, nonatomic) RETableViewManager *manager;
@end

View File

@@ -0,0 +1,68 @@
//
// ValidationsViewController.m
// RETableViewManagerExample
//
// Created by Roman Efimov on 8/22/13.
// Copyright (c) 2013 Roman Efimov. All rights reserved.
//
#import "ValidationsViewController.h"
@interface ValidationsViewController ()
@property (strong, readwrite, nonatomic) RETextItem *textItem;
@property (strong, readwrite, nonatomic) RETextItem *emailItem;
@end
@implementation ValidationsViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"Controls";
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Validate" style:UIBarButtonItemStyleBordered target:self action:@selector(validateButtonPressed:)];
// Create manager
//
_manager = [[RETableViewManager alloc] initWithTableView:self.tableView];
// Add a section
//
RETableViewSection *section = [RETableViewSection sectionWithHeaderTitle:@"Basic controls"];
[_manager addSection:section];
// Add items
//
self.textItem = [RETextItem itemWithTitle:@"Text" value:@"" placeholder:@"Text item"];
self.textItem.validators = @[@"presence", @"length(3, 10)"];
self.emailItem = [RETextItem itemWithTitle:@"Email" value:@"" placeholder:@"Email item"];
self.emailItem.name = @"Your email";
self.emailItem.keyboardType = UIKeyboardTypeEmailAddress;
self.emailItem.autocapitalizationType = UITextAutocapitalizationTypeNone;
self.emailItem.validators = @[@"presence", @"email"];
[section addItem:self.textItem];
[section addItem:self.emailItem];
}
#pragma mark -
#pragma mark Button actions
- (void)validateButtonPressed:(UIButton *)sender
{
if (self.manager.errors) {
NSMutableArray *errors = [NSMutableArray array];
for (NSError *error in self.manager.errors) {
[errors addObject:error.localizedDescription];
}
NSString *errorString = [errors componentsJoinedByString:@"\n"];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Errors" message:errorString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
} else {
NSLog(@"All good, no errors!");
}
}
@end

View File

@@ -61,9 +61,3 @@
}
@end
ring *)string
{
return nil;
}
@end