mirror of
https://github.com/zhigang1992/RETableViewManager.git
synced 2026-06-17 05:29:59 +08:00
Add validations example
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -61,9 +61,3 @@
|
||||
}
|
||||
|
||||
@end
|
||||
ring *)string
|
||||
{
|
||||
return nil;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user