├── .gitignore ├── DBSignup ├── en.lproj │ ├── InfoPlist.strings │ ├── RootViewController.xib │ └── MainWindow.xib ├── male.png ├── female.png ├── background.png ├── background@2x.png ├── RootViewController.h ├── DBSignup-Prefix.pch ├── main.m ├── DBSignupAppDelegate.h ├── DBSignup-Info.plist ├── DBSignupAppDelegate.m ├── DBSignupViewController.h ├── RootViewController.m ├── DBSignupViewController.m └── DBSignupViewController.xib ├── PSD └── background.psd ├── DBSignup.xcodeproj ├── project.xcworkspace │ └── contents.xcworkspacedata ├── xcuserdata │ └── davide.xcuserdatad │ │ └── xcschemes │ │ ├── xcschememanagement.plist │ │ └── DBSignup.xcscheme └── project.pbxproj ├── README.mdown └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /DBSignup/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /DBSignup/male.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidebettio/DBSignupViewController/HEAD/DBSignup/male.png -------------------------------------------------------------------------------- /PSD/background.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidebettio/DBSignupViewController/HEAD/PSD/background.psd -------------------------------------------------------------------------------- /DBSignup/female.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidebettio/DBSignupViewController/HEAD/DBSignup/female.png -------------------------------------------------------------------------------- /DBSignup/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidebettio/DBSignupViewController/HEAD/DBSignup/background.png -------------------------------------------------------------------------------- /DBSignup/background@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidebettio/DBSignupViewController/HEAD/DBSignup/background@2x.png -------------------------------------------------------------------------------- /DBSignup.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /README.mdown: -------------------------------------------------------------------------------- 1 | DBSignupViewController provide a view controller for a complete signup like latest version of Foursquare app (3.2.1) 2 | 3 | [![](https://s3-eu-west-1.amazonaws.com/public.davidebettio.com/DBSignupViewController1.png)](https://s3-eu-west-1.amazonaws.com/public.davidebettio.com/DBSignupViewController1.png) -------------------------------------------------------------------------------- /DBSignup/RootViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // RootViewController.h 3 | // DBSignup 4 | // 5 | // Created by Davide Bettio on 7/4/11. 6 | // Copyright 2011 03081340121. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface RootViewController : UITableViewController { 12 | 13 | } 14 | 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /DBSignup/DBSignup-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'DBSignup' target in the 'DBSignup' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /DBSignup/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // DBSignup 4 | // 5 | // Created by Davide Bettio on 7/4/11. 6 | // Copyright 2011 03081340121. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | [pool release]; 16 | return retVal; 17 | } 18 | -------------------------------------------------------------------------------- /DBSignup/DBSignupAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // DBSignupAppDelegate.h 3 | // DBSignup 4 | // 5 | // Created by Davide Bettio on 7/4/11. 6 | // Copyright 2011 03081340121. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DBSignupAppDelegate : NSObject { 12 | 13 | } 14 | 15 | @property (nonatomic, retain) IBOutlet UIWindow *window; 16 | @property (nonatomic, retain) IBOutlet UINavigationController *navigationController; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /DBSignup.xcodeproj/xcuserdata/davide.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | DBSignup.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 6B26FB1113C23F98000766DE 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /DBSignup/DBSignup-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | Davide-Bettio.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleShortVersionString 22 | 1.0 23 | CFBundleSignature 24 | ???? 25 | CFBundleVersion 26 | 1.0 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | * Copyright (c) 2011, Davide Bettio 2 | * All rights reserved. 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions are met: 6 | * * Redistributions of source code must retain the above copyright 7 | * notice, this list of conditions and the following disclaimer. 8 | * * Redistributions in binary form must reproduce the above copyright 9 | * notice, this list of conditions and the following disclaimer in the 10 | * documentation and/or other materials provided with the distribution. 11 | * * Neither the name of the nor the 12 | * names of its contributors may be used to endorse or promote products 13 | * derived from this software without specific prior written permission. 14 | * 15 | * THIS SOFTWARE IS PROVIDED BY Davide Bettio ``AS IS'' AND ANY 16 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | * DISCLAIMED. IN NO EVENT SHALL Davide Bettio BE LIABLE FOR ANY 19 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /DBSignup/DBSignupAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // DBSignupAppDelegate.m 3 | // DBSignup 4 | // 5 | // Created by Davide Bettio on 7/4/11. 6 | // Copyright 2011 03081340121. All rights reserved. 7 | // 8 | 9 | #import "DBSignupAppDelegate.h" 10 | 11 | @implementation DBSignupAppDelegate 12 | 13 | 14 | @synthesize window=_window; 15 | 16 | @synthesize navigationController=_navigationController; 17 | 18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 19 | { 20 | // Override point for customization after application launch. 21 | // Add the navigation controller's view to the window and display. 22 | self.window.rootViewController = self.navigationController; 23 | [self.window makeKeyAndVisible]; 24 | return YES; 25 | } 26 | 27 | - (void)applicationWillResignActive:(UIApplication *)application 28 | { 29 | /* 30 | 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. 31 | Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 32 | */ 33 | } 34 | 35 | - (void)applicationDidEnterBackground:(UIApplication *)application 36 | { 37 | /* 38 | 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. 39 | If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 40 | */ 41 | } 42 | 43 | - (void)applicationWillEnterForeground:(UIApplication *)application 44 | { 45 | /* 46 | Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 47 | */ 48 | } 49 | 50 | - (void)applicationDidBecomeActive:(UIApplication *)application 51 | { 52 | /* 53 | 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. 54 | */ 55 | } 56 | 57 | - (void)applicationWillTerminate:(UIApplication *)application 58 | { 59 | /* 60 | Called when the application is about to terminate. 61 | Save data if appropriate. 62 | See also applicationDidEnterBackground:. 63 | */ 64 | } 65 | 66 | - (void)dealloc 67 | { 68 | [_window release]; 69 | [_navigationController release]; 70 | [super dealloc]; 71 | } 72 | 73 | @end 74 | -------------------------------------------------------------------------------- /DBSignup/DBSignupViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DBSignupViewController.h 3 | // DBSignup 4 | // 5 | // Created by Davide Bettio on 7/4/11. 6 | // Copyright 2011 03081340121. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DBSignupViewController : UIViewController { 12 | UITextField *nameTextField_; 13 | UITextField *lastNameTextField_; 14 | UITextField *emailTextField_; 15 | UITextField *passwordTextField_; 16 | UITextField *birthdayTextField_; 17 | UITextField *genderTextField_; 18 | UITextField *phoneTextField_; 19 | UIButton *photoButton_; 20 | UITextView *termsTextView_; 21 | 22 | UILabel *emailLabel_; 23 | UILabel *passwordLabel_; 24 | UILabel *birthdayLabel_; 25 | UILabel *genderLabel_; 26 | UILabel *phoneLabel_; 27 | 28 | UIToolbar *keyboardToolbar_; 29 | UIPickerView *genderPickerView_; 30 | UIDatePicker *birthdayDatePicker_; 31 | 32 | NSDate *birthday_; 33 | NSString *gender_; 34 | UIImage *photo_; 35 | } 36 | 37 | @property(nonatomic, retain) IBOutlet UITextField *nameTextField; 38 | @property(nonatomic, retain) IBOutlet UITextField *lastNameTextField; 39 | @property(nonatomic, retain) IBOutlet UITextField *emailTextField; 40 | @property(nonatomic, retain) IBOutlet UITextField *passwordTextField; 41 | @property(nonatomic, retain) IBOutlet UITextField *birthdayTextField; 42 | @property(nonatomic, retain) IBOutlet UITextField *genderTextField; 43 | @property(nonatomic, retain) IBOutlet UITextField *phoneTextField; 44 | @property(nonatomic, retain) IBOutlet UIButton *photoButton; 45 | @property(nonatomic, retain) IBOutlet UITextView *termsTextView; 46 | 47 | @property(nonatomic, retain) IBOutlet UILabel *emailLabel; 48 | @property(nonatomic, retain) IBOutlet UILabel *passwordLabel; 49 | @property(nonatomic, retain) IBOutlet UILabel *birthdayLabel; 50 | @property(nonatomic, retain) IBOutlet UILabel *genderLabel; 51 | @property(nonatomic, retain) IBOutlet UILabel *phoneLabel; 52 | 53 | @property(nonatomic, retain) UIToolbar *keyboardToolbar; 54 | @property(nonatomic, retain) UIPickerView *genderPickerView; 55 | @property(nonatomic, retain) UIDatePicker *birthdayDatePicker; 56 | 57 | @property(nonatomic, retain) NSDate *birthday; 58 | @property(nonatomic, retain) NSString *gender; 59 | @property(nonatomic, retain) UIImage *photo; 60 | 61 | - (IBAction)choosePhoto:(id)sender; 62 | 63 | - (void)resignKeyboard:(id)sender; 64 | - (void)previousField:(id)sender; 65 | - (void)nextField:(id)sender; 66 | - (id)getFirstResponder; 67 | - (void)animateView:(NSUInteger)tag; 68 | - (void)checkBarButton:(NSUInteger)tag; 69 | - (void)checkSpecialFields:(NSUInteger)tag; 70 | - (void)setBirthdayData; 71 | - (void)setGenderData; 72 | - (void)birthdayDatePickerChanged:(id)sender; 73 | - (void)signup:(id)sender; 74 | - (void)resetLabelsColors; 75 | 76 | + (UIColor *)labelNormalColor; 77 | + (UIColor *)labelSelectedColor; 78 | @end 79 | -------------------------------------------------------------------------------- /DBSignup.xcodeproj/xcuserdata/davide.xcuserdatad/xcschemes/DBSignup.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 14 | 20 | 21 | 22 | 23 | 24 | 29 | 30 | 31 | 32 | 40 | 41 | 47 | 48 | 49 | 50 | 51 | 52 | 59 | 60 | 66 | 67 | 68 | 69 | 71 | 72 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /DBSignup/RootViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // RootViewController.m 3 | // DBSignup 4 | // 5 | // Created by Davide Bettio on 7/4/11. 6 | // Copyright 2011 03081340121. All rights reserved. 7 | // 8 | 9 | #import "RootViewController.h" 10 | #import "DBSignupViewController.h" 11 | 12 | @implementation RootViewController 13 | 14 | - (void)viewDidLoad 15 | { 16 | [super viewDidLoad]; 17 | self.title = @"Main"; 18 | } 19 | 20 | - (void)viewWillAppear:(BOOL)animated 21 | { 22 | [super viewWillAppear:animated]; 23 | } 24 | 25 | - (void)viewDidAppear:(BOOL)animated 26 | { 27 | [super viewDidAppear:animated]; 28 | } 29 | 30 | - (void)viewWillDisappear:(BOOL)animated 31 | { 32 | [super viewWillDisappear:animated]; 33 | } 34 | 35 | - (void)viewDidDisappear:(BOOL)animated 36 | { 37 | [super viewDidDisappear:animated]; 38 | } 39 | 40 | /* 41 | // Override to allow orientations other than the default portrait orientation. 42 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 43 | // Return YES for supported orientations. 44 | return (interfaceOrientation == UIInterfaceOrientationPortrait); 45 | } 46 | */ 47 | 48 | // Customize the number of sections in the table view. 49 | - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 50 | { 51 | return 1; 52 | } 53 | 54 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 55 | { 56 | return 1; 57 | } 58 | 59 | // Customize the appearance of table view cells. 60 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 61 | { 62 | static NSString *CellIdentifier = @"Cell"; 63 | 64 | UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 65 | if (cell == nil) { 66 | cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 67 | cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 68 | } 69 | 70 | [cell.textLabel setText:@"Signup"]; 71 | 72 | return cell; 73 | } 74 | 75 | /* 76 | // Override to support conditional editing of the table view. 77 | - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 78 | { 79 | // Return NO if you do not want the specified item to be editable. 80 | return YES; 81 | } 82 | */ 83 | 84 | /* 85 | // Override to support editing the table view. 86 | - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 87 | { 88 | if (editingStyle == UITableViewCellEditingStyleDelete) 89 | { 90 | // Delete the row from the data source. 91 | [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 92 | } 93 | else if (editingStyle == UITableViewCellEditingStyleInsert) 94 | { 95 | // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view. 96 | } 97 | } 98 | */ 99 | 100 | /* 101 | // Override to support rearranging the table view. 102 | - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath 103 | { 104 | } 105 | */ 106 | 107 | /* 108 | // Override to support conditional rearranging of the table view. 109 | - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath 110 | { 111 | // Return NO if you do not want the item to be re-orderable. 112 | return YES; 113 | } 114 | */ 115 | 116 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 117 | { 118 | DBSignupViewController *dbSignupViewController = [[DBSignupViewController alloc] initWithNibName:@"DBSignupViewController" bundle:nil]; 119 | [self.navigationController pushViewController:dbSignupViewController animated:YES]; 120 | [dbSignupViewController release]; 121 | } 122 | 123 | - (void)didReceiveMemoryWarning 124 | { 125 | // Releases the view if it doesn't have a superview. 126 | [super didReceiveMemoryWarning]; 127 | 128 | // Relinquish ownership any cached data, images, etc that aren't in use. 129 | } 130 | 131 | - (void)viewDidUnload 132 | { 133 | [super viewDidUnload]; 134 | 135 | // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand. 136 | // For example: self.myOutlet = nil; 137 | } 138 | 139 | - (void)dealloc 140 | { 141 | [super dealloc]; 142 | } 143 | 144 | @end 145 | -------------------------------------------------------------------------------- /DBSignup.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 6B26FB1713C23F98000766DE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B26FB1613C23F98000766DE /* UIKit.framework */; }; 11 | 6B26FB1913C23F98000766DE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B26FB1813C23F98000766DE /* Foundation.framework */; }; 12 | 6B26FB1B13C23F98000766DE /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B26FB1A13C23F98000766DE /* CoreGraphics.framework */; }; 13 | 6B26FB2113C23F98000766DE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6B26FB1F13C23F98000766DE /* InfoPlist.strings */; }; 14 | 6B26FB2413C23F98000766DE /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B26FB2313C23F98000766DE /* main.m */; }; 15 | 6B26FB2713C23F98000766DE /* DBSignupAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B26FB2613C23F98000766DE /* DBSignupAppDelegate.m */; }; 16 | 6B26FB2A13C23F98000766DE /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6B26FB2813C23F98000766DE /* MainWindow.xib */; }; 17 | 6B26FB2D13C23F98000766DE /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B26FB2C13C23F98000766DE /* RootViewController.m */; }; 18 | 6B26FB3013C23F98000766DE /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6B26FB2E13C23F98000766DE /* RootViewController.xib */; }; 19 | 6B41E3EF13C26BDE00A35DD6 /* male.png in Resources */ = {isa = PBXBuildFile; fileRef = 6B41E3EC13C26BDE00A35DD6 /* male.png */; }; 20 | 6B41E3F013C26BDE00A35DD6 /* female.png in Resources */ = {isa = PBXBuildFile; fileRef = 6B41E3ED13C26BDE00A35DD6 /* female.png */; }; 21 | 6B41E3F113C26BDE00A35DD6 /* background.png in Resources */ = {isa = PBXBuildFile; fileRef = 6B41E3EE13C26BDE00A35DD6 /* background.png */; }; 22 | 6B71DD7613C268DD00FD23B0 /* DBSignupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B71DD7413C268DD00FD23B0 /* DBSignupViewController.m */; }; 23 | 6B71DD7713C268DD00FD23B0 /* DBSignupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6B71DD7513C268DD00FD23B0 /* DBSignupViewController.xib */; }; 24 | 6B752F2813C75F910023D62C /* background@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6B752F2713C75F910023D62C /* background@2x.png */; }; 25 | /* End PBXBuildFile section */ 26 | 27 | /* Begin PBXFileReference section */ 28 | 6B26FB1213C23F98000766DE /* DBSignup.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DBSignup.app; sourceTree = BUILT_PRODUCTS_DIR; }; 29 | 6B26FB1613C23F98000766DE /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 30 | 6B26FB1813C23F98000766DE /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 31 | 6B26FB1A13C23F98000766DE /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 32 | 6B26FB1E13C23F98000766DE /* DBSignup-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "DBSignup-Info.plist"; sourceTree = ""; }; 33 | 6B26FB2013C23F98000766DE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 34 | 6B26FB2213C23F98000766DE /* DBSignup-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DBSignup-Prefix.pch"; sourceTree = ""; }; 35 | 6B26FB2313C23F98000766DE /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 36 | 6B26FB2513C23F98000766DE /* DBSignupAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DBSignupAppDelegate.h; sourceTree = ""; }; 37 | 6B26FB2613C23F98000766DE /* DBSignupAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DBSignupAppDelegate.m; sourceTree = ""; }; 38 | 6B26FB2913C23F98000766DE /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainWindow.xib; sourceTree = ""; }; 39 | 6B26FB2B13C23F98000766DE /* RootViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; }; 40 | 6B26FB2C13C23F98000766DE /* RootViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = ""; }; 41 | 6B26FB2F13C23F98000766DE /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/RootViewController.xib; sourceTree = ""; }; 42 | 6B41E3EC13C26BDE00A35DD6 /* male.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = male.png; sourceTree = ""; }; 43 | 6B41E3ED13C26BDE00A35DD6 /* female.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = female.png; sourceTree = ""; }; 44 | 6B41E3EE13C26BDE00A35DD6 /* background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = background.png; sourceTree = ""; }; 45 | 6B71DD7313C268DD00FD23B0 /* DBSignupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DBSignupViewController.h; sourceTree = ""; }; 46 | 6B71DD7413C268DD00FD23B0 /* DBSignupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DBSignupViewController.m; sourceTree = ""; }; 47 | 6B71DD7513C268DD00FD23B0 /* DBSignupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DBSignupViewController.xib; sourceTree = ""; }; 48 | 6B752F2713C75F910023D62C /* background@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "background@2x.png"; sourceTree = ""; }; 49 | /* End PBXFileReference section */ 50 | 51 | /* Begin PBXFrameworksBuildPhase section */ 52 | 6B26FB0F13C23F98000766DE /* Frameworks */ = { 53 | isa = PBXFrameworksBuildPhase; 54 | buildActionMask = 2147483647; 55 | files = ( 56 | 6B26FB1713C23F98000766DE /* UIKit.framework in Frameworks */, 57 | 6B26FB1913C23F98000766DE /* Foundation.framework in Frameworks */, 58 | 6B26FB1B13C23F98000766DE /* CoreGraphics.framework in Frameworks */, 59 | ); 60 | runOnlyForDeploymentPostprocessing = 0; 61 | }; 62 | /* End PBXFrameworksBuildPhase section */ 63 | 64 | /* Begin PBXGroup section */ 65 | 6B26FB0713C23F97000766DE = { 66 | isa = PBXGroup; 67 | children = ( 68 | 6B26FB1C13C23F98000766DE /* DBSignup */, 69 | 6B26FB1513C23F98000766DE /* Frameworks */, 70 | 6B26FB1313C23F98000766DE /* Products */, 71 | ); 72 | sourceTree = ""; 73 | }; 74 | 6B26FB1313C23F98000766DE /* Products */ = { 75 | isa = PBXGroup; 76 | children = ( 77 | 6B26FB1213C23F98000766DE /* DBSignup.app */, 78 | ); 79 | name = Products; 80 | sourceTree = ""; 81 | }; 82 | 6B26FB1513C23F98000766DE /* Frameworks */ = { 83 | isa = PBXGroup; 84 | children = ( 85 | 6B26FB1613C23F98000766DE /* UIKit.framework */, 86 | 6B26FB1813C23F98000766DE /* Foundation.framework */, 87 | 6B26FB1A13C23F98000766DE /* CoreGraphics.framework */, 88 | ); 89 | name = Frameworks; 90 | sourceTree = ""; 91 | }; 92 | 6B26FB1C13C23F98000766DE /* DBSignup */ = { 93 | isa = PBXGroup; 94 | children = ( 95 | 6B41E3F313C26BF400A35DD6 /* Images */, 96 | 6B71DD8913C26B8900FD23B0 /* Views */, 97 | 6B71DD7313C268DD00FD23B0 /* DBSignupViewController.h */, 98 | 6B71DD7413C268DD00FD23B0 /* DBSignupViewController.m */, 99 | 6B26FB2513C23F98000766DE /* DBSignupAppDelegate.h */, 100 | 6B26FB2613C23F98000766DE /* DBSignupAppDelegate.m */, 101 | 6B26FB2B13C23F98000766DE /* RootViewController.h */, 102 | 6B26FB2C13C23F98000766DE /* RootViewController.m */, 103 | 6B26FB1D13C23F98000766DE /* Supporting Files */, 104 | ); 105 | path = DBSignup; 106 | sourceTree = ""; 107 | }; 108 | 6B26FB1D13C23F98000766DE /* Supporting Files */ = { 109 | isa = PBXGroup; 110 | children = ( 111 | 6B26FB1E13C23F98000766DE /* DBSignup-Info.plist */, 112 | 6B26FB1F13C23F98000766DE /* InfoPlist.strings */, 113 | 6B26FB2213C23F98000766DE /* DBSignup-Prefix.pch */, 114 | 6B26FB2313C23F98000766DE /* main.m */, 115 | ); 116 | name = "Supporting Files"; 117 | sourceTree = ""; 118 | }; 119 | 6B41E3F313C26BF400A35DD6 /* Images */ = { 120 | isa = PBXGroup; 121 | children = ( 122 | 6B41E3EE13C26BDE00A35DD6 /* background.png */, 123 | 6B752F2713C75F910023D62C /* background@2x.png */, 124 | 6B41E3EC13C26BDE00A35DD6 /* male.png */, 125 | 6B41E3ED13C26BDE00A35DD6 /* female.png */, 126 | ); 127 | name = Images; 128 | sourceTree = ""; 129 | }; 130 | 6B71DD8913C26B8900FD23B0 /* Views */ = { 131 | isa = PBXGroup; 132 | children = ( 133 | 6B71DD7513C268DD00FD23B0 /* DBSignupViewController.xib */, 134 | 6B26FB2813C23F98000766DE /* MainWindow.xib */, 135 | 6B26FB2E13C23F98000766DE /* RootViewController.xib */, 136 | ); 137 | name = Views; 138 | sourceTree = ""; 139 | }; 140 | /* End PBXGroup section */ 141 | 142 | /* Begin PBXNativeTarget section */ 143 | 6B26FB1113C23F98000766DE /* DBSignup */ = { 144 | isa = PBXNativeTarget; 145 | buildConfigurationList = 6B26FB3313C23F98000766DE /* Build configuration list for PBXNativeTarget "DBSignup" */; 146 | buildPhases = ( 147 | 6B26FB0E13C23F98000766DE /* Sources */, 148 | 6B26FB0F13C23F98000766DE /* Frameworks */, 149 | 6B26FB1013C23F98000766DE /* Resources */, 150 | ); 151 | buildRules = ( 152 | ); 153 | dependencies = ( 154 | ); 155 | name = DBSignup; 156 | productName = DBSignup; 157 | productReference = 6B26FB1213C23F98000766DE /* DBSignup.app */; 158 | productType = "com.apple.product-type.application"; 159 | }; 160 | /* End PBXNativeTarget section */ 161 | 162 | /* Begin PBXProject section */ 163 | 6B26FB0913C23F97000766DE /* Project object */ = { 164 | isa = PBXProject; 165 | attributes = { 166 | ORGANIZATIONNAME = 03081340121; 167 | }; 168 | buildConfigurationList = 6B26FB0C13C23F97000766DE /* Build configuration list for PBXProject "DBSignup" */; 169 | compatibilityVersion = "Xcode 3.2"; 170 | developmentRegion = English; 171 | hasScannedForEncodings = 0; 172 | knownRegions = ( 173 | en, 174 | ); 175 | mainGroup = 6B26FB0713C23F97000766DE; 176 | productRefGroup = 6B26FB1313C23F98000766DE /* Products */; 177 | projectDirPath = ""; 178 | projectRoot = ""; 179 | targets = ( 180 | 6B26FB1113C23F98000766DE /* DBSignup */, 181 | ); 182 | }; 183 | /* End PBXProject section */ 184 | 185 | /* Begin PBXResourcesBuildPhase section */ 186 | 6B26FB1013C23F98000766DE /* Resources */ = { 187 | isa = PBXResourcesBuildPhase; 188 | buildActionMask = 2147483647; 189 | files = ( 190 | 6B26FB2113C23F98000766DE /* InfoPlist.strings in Resources */, 191 | 6B26FB2A13C23F98000766DE /* MainWindow.xib in Resources */, 192 | 6B26FB3013C23F98000766DE /* RootViewController.xib in Resources */, 193 | 6B71DD7713C268DD00FD23B0 /* DBSignupViewController.xib in Resources */, 194 | 6B41E3EF13C26BDE00A35DD6 /* male.png in Resources */, 195 | 6B41E3F013C26BDE00A35DD6 /* female.png in Resources */, 196 | 6B41E3F113C26BDE00A35DD6 /* background.png in Resources */, 197 | 6B752F2813C75F910023D62C /* background@2x.png in Resources */, 198 | ); 199 | runOnlyForDeploymentPostprocessing = 0; 200 | }; 201 | /* End PBXResourcesBuildPhase section */ 202 | 203 | /* Begin PBXSourcesBuildPhase section */ 204 | 6B26FB0E13C23F98000766DE /* Sources */ = { 205 | isa = PBXSourcesBuildPhase; 206 | buildActionMask = 2147483647; 207 | files = ( 208 | 6B26FB2413C23F98000766DE /* main.m in Sources */, 209 | 6B26FB2713C23F98000766DE /* DBSignupAppDelegate.m in Sources */, 210 | 6B26FB2D13C23F98000766DE /* RootViewController.m in Sources */, 211 | 6B71DD7613C268DD00FD23B0 /* DBSignupViewController.m in Sources */, 212 | ); 213 | runOnlyForDeploymentPostprocessing = 0; 214 | }; 215 | /* End PBXSourcesBuildPhase section */ 216 | 217 | /* Begin PBXVariantGroup section */ 218 | 6B26FB1F13C23F98000766DE /* InfoPlist.strings */ = { 219 | isa = PBXVariantGroup; 220 | children = ( 221 | 6B26FB2013C23F98000766DE /* en */, 222 | ); 223 | name = InfoPlist.strings; 224 | sourceTree = ""; 225 | }; 226 | 6B26FB2813C23F98000766DE /* MainWindow.xib */ = { 227 | isa = PBXVariantGroup; 228 | children = ( 229 | 6B26FB2913C23F98000766DE /* en */, 230 | ); 231 | name = MainWindow.xib; 232 | sourceTree = ""; 233 | }; 234 | 6B26FB2E13C23F98000766DE /* RootViewController.xib */ = { 235 | isa = PBXVariantGroup; 236 | children = ( 237 | 6B26FB2F13C23F98000766DE /* en */, 238 | ); 239 | name = RootViewController.xib; 240 | sourceTree = ""; 241 | }; 242 | /* End PBXVariantGroup section */ 243 | 244 | /* Begin XCBuildConfiguration section */ 245 | 6B26FB3113C23F98000766DE /* Debug */ = { 246 | isa = XCBuildConfiguration; 247 | buildSettings = { 248 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 249 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 250 | GCC_C_LANGUAGE_STANDARD = gnu99; 251 | GCC_OPTIMIZATION_LEVEL = 0; 252 | GCC_PREPROCESSOR_DEFINITIONS = DEBUG; 253 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 254 | GCC_VERSION = com.apple.compilers.llvmgcc42; 255 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 256 | GCC_WARN_UNUSED_VARIABLE = YES; 257 | IPHONEOS_DEPLOYMENT_TARGET = 4.3; 258 | SDKROOT = iphoneos; 259 | }; 260 | name = Debug; 261 | }; 262 | 6B26FB3213C23F98000766DE /* Release */ = { 263 | isa = XCBuildConfiguration; 264 | buildSettings = { 265 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 266 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 267 | GCC_C_LANGUAGE_STANDARD = gnu99; 268 | GCC_VERSION = com.apple.compilers.llvmgcc42; 269 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 270 | GCC_WARN_UNUSED_VARIABLE = YES; 271 | IPHONEOS_DEPLOYMENT_TARGET = 4.3; 272 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 273 | SDKROOT = iphoneos; 274 | }; 275 | name = Release; 276 | }; 277 | 6B26FB3413C23F98000766DE /* Debug */ = { 278 | isa = XCBuildConfiguration; 279 | buildSettings = { 280 | ALWAYS_SEARCH_USER_PATHS = NO; 281 | COPY_PHASE_STRIP = NO; 282 | GCC_DYNAMIC_NO_PIC = NO; 283 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 284 | GCC_PREFIX_HEADER = "DBSignup/DBSignup-Prefix.pch"; 285 | INFOPLIST_FILE = "DBSignup/DBSignup-Info.plist"; 286 | PRODUCT_NAME = "$(TARGET_NAME)"; 287 | WRAPPER_EXTENSION = app; 288 | }; 289 | name = Debug; 290 | }; 291 | 6B26FB3513C23F98000766DE /* Release */ = { 292 | isa = XCBuildConfiguration; 293 | buildSettings = { 294 | ALWAYS_SEARCH_USER_PATHS = NO; 295 | COPY_PHASE_STRIP = YES; 296 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 297 | GCC_PREFIX_HEADER = "DBSignup/DBSignup-Prefix.pch"; 298 | INFOPLIST_FILE = "DBSignup/DBSignup-Info.plist"; 299 | PRODUCT_NAME = "$(TARGET_NAME)"; 300 | VALIDATE_PRODUCT = YES; 301 | WRAPPER_EXTENSION = app; 302 | }; 303 | name = Release; 304 | }; 305 | /* End XCBuildConfiguration section */ 306 | 307 | /* Begin XCConfigurationList section */ 308 | 6B26FB0C13C23F97000766DE /* Build configuration list for PBXProject "DBSignup" */ = { 309 | isa = XCConfigurationList; 310 | buildConfigurations = ( 311 | 6B26FB3113C23F98000766DE /* Debug */, 312 | 6B26FB3213C23F98000766DE /* Release */, 313 | ); 314 | defaultConfigurationIsVisible = 0; 315 | defaultConfigurationName = Release; 316 | }; 317 | 6B26FB3313C23F98000766DE /* Build configuration list for PBXNativeTarget "DBSignup" */ = { 318 | isa = XCConfigurationList; 319 | buildConfigurations = ( 320 | 6B26FB3413C23F98000766DE /* Debug */, 321 | 6B26FB3513C23F98000766DE /* Release */, 322 | ); 323 | defaultConfigurationIsVisible = 0; 324 | defaultConfigurationName = Release; 325 | }; 326 | /* End XCConfigurationList section */ 327 | }; 328 | rootObject = 6B26FB0913C23F97000766DE /* Project object */; 329 | } 330 | -------------------------------------------------------------------------------- /DBSignup/en.lproj/RootViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 784 5 | 10D541 6 | 760 7 | 1038.29 8 | 460.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 81 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | 42 | 274 43 | {320, 247} 44 | 45 | 46 | 3 47 | MQA 48 | 49 | NO 50 | YES 51 | NO 52 | IBCocoaTouchFramework 53 | NO 54 | 1 55 | 0 56 | YES 57 | 44 58 | 22 59 | 22 60 | 61 | 62 | 63 | 64 | YES 65 | 66 | 67 | view 68 | 69 | 70 | 71 | 3 72 | 73 | 74 | 75 | dataSource 76 | 77 | 78 | 79 | 4 80 | 81 | 82 | 83 | delegate 84 | 85 | 86 | 87 | 5 88 | 89 | 90 | 91 | 92 | YES 93 | 94 | 0 95 | 96 | 97 | 98 | 99 | 100 | -1 101 | 102 | 103 | File's Owner 104 | 105 | 106 | -2 107 | 108 | 109 | 110 | 111 | 2 112 | 113 | 114 | 115 | 116 | 117 | 118 | YES 119 | 120 | YES 121 | -1.CustomClassName 122 | -2.CustomClassName 123 | 2.IBEditorWindowLastContentRect 124 | 2.IBPluginDependency 125 | 126 | 127 | YES 128 | RootViewController 129 | UIResponder 130 | {{144, 609}, {320, 247}} 131 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 132 | 133 | 134 | 135 | YES 136 | 137 | 138 | YES 139 | 140 | 141 | 142 | 143 | YES 144 | 145 | 146 | YES 147 | 148 | 149 | 150 | 5 151 | 152 | 153 | 154 | YES 155 | 156 | RootViewController 157 | UITableViewController 158 | 159 | IBProjectSource 160 | RootViewController.h 161 | 162 | 163 | 164 | 165 | YES 166 | 167 | NSObject 168 | 169 | IBFrameworkSource 170 | Foundation.framework/Headers/NSError.h 171 | 172 | 173 | 174 | NSObject 175 | 176 | IBFrameworkSource 177 | Foundation.framework/Headers/NSFileManager.h 178 | 179 | 180 | 181 | NSObject 182 | 183 | IBFrameworkSource 184 | Foundation.framework/Headers/NSKeyValueCoding.h 185 | 186 | 187 | 188 | NSObject 189 | 190 | IBFrameworkSource 191 | Foundation.framework/Headers/NSKeyValueObserving.h 192 | 193 | 194 | 195 | NSObject 196 | 197 | IBFrameworkSource 198 | Foundation.framework/Headers/NSKeyedArchiver.h 199 | 200 | 201 | 202 | NSObject 203 | 204 | IBFrameworkSource 205 | Foundation.framework/Headers/NSNetServices.h 206 | 207 | 208 | 209 | NSObject 210 | 211 | IBFrameworkSource 212 | Foundation.framework/Headers/NSObject.h 213 | 214 | 215 | 216 | NSObject 217 | 218 | IBFrameworkSource 219 | Foundation.framework/Headers/NSPort.h 220 | 221 | 222 | 223 | NSObject 224 | 225 | IBFrameworkSource 226 | Foundation.framework/Headers/NSRunLoop.h 227 | 228 | 229 | 230 | NSObject 231 | 232 | IBFrameworkSource 233 | Foundation.framework/Headers/NSStream.h 234 | 235 | 236 | 237 | NSObject 238 | 239 | IBFrameworkSource 240 | Foundation.framework/Headers/NSThread.h 241 | 242 | 243 | 244 | NSObject 245 | 246 | IBFrameworkSource 247 | Foundation.framework/Headers/NSURL.h 248 | 249 | 250 | 251 | NSObject 252 | 253 | IBFrameworkSource 254 | Foundation.framework/Headers/NSURLConnection.h 255 | 256 | 257 | 258 | NSObject 259 | 260 | IBFrameworkSource 261 | Foundation.framework/Headers/NSXMLParser.h 262 | 263 | 264 | 265 | NSObject 266 | 267 | IBFrameworkSource 268 | UIKit.framework/Headers/UIAccessibility.h 269 | 270 | 271 | 272 | NSObject 273 | 274 | IBFrameworkSource 275 | UIKit.framework/Headers/UINibLoading.h 276 | 277 | 278 | 279 | NSObject 280 | 281 | IBFrameworkSource 282 | UIKit.framework/Headers/UIResponder.h 283 | 284 | 285 | 286 | UIResponder 287 | NSObject 288 | 289 | 290 | 291 | UIScrollView 292 | UIView 293 | 294 | IBFrameworkSource 295 | UIKit.framework/Headers/UIScrollView.h 296 | 297 | 298 | 299 | UISearchBar 300 | UIView 301 | 302 | IBFrameworkSource 303 | UIKit.framework/Headers/UISearchBar.h 304 | 305 | 306 | 307 | UISearchDisplayController 308 | NSObject 309 | 310 | IBFrameworkSource 311 | UIKit.framework/Headers/UISearchDisplayController.h 312 | 313 | 314 | 315 | UITableView 316 | UIScrollView 317 | 318 | IBFrameworkSource 319 | UIKit.framework/Headers/UITableView.h 320 | 321 | 322 | 323 | UITableViewController 324 | UIViewController 325 | 326 | IBFrameworkSource 327 | UIKit.framework/Headers/UITableViewController.h 328 | 329 | 330 | 331 | UIView 332 | 333 | IBFrameworkSource 334 | UIKit.framework/Headers/UITextField.h 335 | 336 | 337 | 338 | UIView 339 | UIResponder 340 | 341 | IBFrameworkSource 342 | UIKit.framework/Headers/UIView.h 343 | 344 | 345 | 346 | UIViewController 347 | 348 | IBFrameworkSource 349 | UIKit.framework/Headers/UINavigationController.h 350 | 351 | 352 | 353 | UIViewController 354 | 355 | IBFrameworkSource 356 | UIKit.framework/Headers/UITabBarController.h 357 | 358 | 359 | 360 | UIViewController 361 | UIResponder 362 | 363 | IBFrameworkSource 364 | UIKit.framework/Headers/UIViewController.h 365 | 366 | 367 | 368 | 369 | 0 370 | IBCocoaTouchFramework 371 | 372 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 373 | 374 | 375 | 376 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 377 | 378 | 379 | YES 380 | DBSignup.xcodeproj 381 | 3 382 | 81 383 | 384 | 385 | -------------------------------------------------------------------------------- /DBSignup/DBSignupViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // DBSignupViewController.m 3 | // DBSignup 4 | // 5 | // Created by Davide Bettio on 7/4/11. 6 | // Copyright 2011 03081340121. All rights reserved. 7 | // 8 | 9 | #import "DBSignupViewController.h" 10 | 11 | // Safe releases 12 | #define RELEASE_SAFELY(__POINTER) { [__POINTER release]; __POINTER = nil; } 13 | 14 | #define FIELDS_COUNT 7 15 | #define BIRTHDAY_FIELD_TAG 5 16 | #define GENDER_FIELD_TAG 6 17 | 18 | @implementation DBSignupViewController 19 | 20 | @synthesize nameTextField = nameTextField_; 21 | @synthesize lastNameTextField = lastNameTextField_; 22 | @synthesize emailTextField = emailTextField_; 23 | @synthesize passwordTextField = passwordTextField_; 24 | @synthesize birthdayTextField = birthdayTextField_; 25 | @synthesize genderTextField = genderTextField_; 26 | @synthesize phoneTextField = phoneTextField_; 27 | @synthesize photoButton = photoButton_; 28 | @synthesize termsTextView = termsTextView_; 29 | 30 | @synthesize emailLabel = emailLabel_; 31 | @synthesize passwordLabel = passwordLabel_; 32 | @synthesize birthdayLabel = birthdayLabel_; 33 | @synthesize genderLabel = genderLabel_; 34 | @synthesize phoneLabel = phoneLabel_; 35 | 36 | @synthesize keyboardToolbar = keyboardToolbar_; 37 | @synthesize genderPickerView = genderPickerView_; 38 | @synthesize birthdayDatePicker = birthdayDatePicker_; 39 | 40 | @synthesize birthday = birthday_; 41 | @synthesize gender = gender_; 42 | @synthesize photo = photo_; 43 | 44 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 45 | { 46 | self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 47 | if (self) { 48 | // Custom initialization 49 | } 50 | return self; 51 | } 52 | 53 | - (void)dealloc 54 | { 55 | RELEASE_SAFELY(nameTextField_); 56 | RELEASE_SAFELY(lastNameTextField_); 57 | RELEASE_SAFELY(emailTextField_); 58 | RELEASE_SAFELY(passwordTextField_); 59 | RELEASE_SAFELY(birthdayTextField_); 60 | RELEASE_SAFELY(genderTextField_); 61 | RELEASE_SAFELY(phoneTextField_); 62 | RELEASE_SAFELY(photoButton_); 63 | RELEASE_SAFELY(termsTextView_); 64 | 65 | RELEASE_SAFELY(emailLabel_); 66 | RELEASE_SAFELY(passwordLabel_); 67 | RELEASE_SAFELY(birthdayLabel_); 68 | RELEASE_SAFELY(genderLabel_); 69 | RELEASE_SAFELY(phoneLabel_); 70 | 71 | RELEASE_SAFELY(keyboardToolbar_); 72 | RELEASE_SAFELY(birthdayDatePicker_); 73 | RELEASE_SAFELY(genderPickerView_); 74 | 75 | RELEASE_SAFELY(birthday_); 76 | RELEASE_SAFELY(gender_); 77 | RELEASE_SAFELY(photo_); 78 | 79 | [super dealloc]; 80 | } 81 | 82 | - (void)didReceiveMemoryWarning 83 | { 84 | // Releases the view if it doesn't have a superview. 85 | [super didReceiveMemoryWarning]; 86 | 87 | // Release any cached data, images, etc that aren't in use. 88 | } 89 | 90 | #pragma mark - View lifecycle 91 | 92 | /* 93 | // Implement loadView to create a view hierarchy programmatically, without using a nib. 94 | - (void)loadView 95 | { 96 | } 97 | */ 98 | 99 | 100 | // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 101 | - (void)viewDidLoad 102 | { 103 | [super viewDidLoad]; 104 | 105 | // Signup button 106 | UIBarButtonItem *signupBarItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"signup", @"") style:UIBarButtonItemStyleBordered target:self action:@selector(signup:)]; 107 | self.navigationItem.rightBarButtonItem = signupBarItem; 108 | [signupBarItem release]; 109 | 110 | // Birthday date picker 111 | if (self.birthdayDatePicker == nil) { 112 | self.birthdayDatePicker = [[UIDatePicker alloc] init]; 113 | [self.birthdayDatePicker addTarget:self action:@selector(birthdayDatePickerChanged:) forControlEvents:UIControlEventValueChanged]; 114 | self.birthdayDatePicker.datePickerMode = UIDatePickerModeDate; 115 | NSDate *currentDate = [NSDate date]; 116 | NSDateComponents *dateComponents = [[NSDateComponents alloc] init]; 117 | [dateComponents setYear:-18]; 118 | NSDate *selectedDate = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:currentDate options:0]; 119 | [dateComponents release]; 120 | [self.birthdayDatePicker setDate:selectedDate animated:NO]; 121 | [self.birthdayDatePicker setMaximumDate:currentDate]; 122 | } 123 | 124 | // Gender picker 125 | if (self.genderPickerView == nil) { 126 | self.genderPickerView = [[UIPickerView alloc] init]; 127 | self.genderPickerView.delegate = self; 128 | self.genderPickerView.showsSelectionIndicator = YES; 129 | } 130 | 131 | // Keyboard toolbar 132 | if (self.keyboardToolbar == nil) { 133 | self.keyboardToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 38.0f)]; 134 | self.keyboardToolbar.barStyle = UIBarStyleBlackTranslucent; 135 | 136 | UIBarButtonItem *previousBarItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"previous", @"") 137 | style:UIBarButtonItemStyleBordered 138 | target:self 139 | action:@selector(previousField:)]; 140 | 141 | UIBarButtonItem *nextBarItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"next", @"") 142 | style:UIBarButtonItemStyleBordered 143 | target:self 144 | action:@selector(nextField:)]; 145 | 146 | UIBarButtonItem *spaceBarItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 147 | target:nil 148 | action:nil]; 149 | 150 | UIBarButtonItem *doneBarItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"done", @"") 151 | style:UIBarButtonItemStyleDone 152 | target:self 153 | action:@selector(resignKeyboard:)]; 154 | 155 | [self.keyboardToolbar setItems:[NSArray arrayWithObjects:previousBarItem, nextBarItem, spaceBarItem, doneBarItem, nil]]; 156 | 157 | self.nameTextField.inputAccessoryView = self.keyboardToolbar; 158 | self.lastNameTextField.inputAccessoryView = self.keyboardToolbar; 159 | self.emailTextField.inputAccessoryView = self.keyboardToolbar; 160 | self.passwordTextField.inputAccessoryView = self.keyboardToolbar; 161 | self.birthdayTextField.inputAccessoryView = self.keyboardToolbar; 162 | self.birthdayTextField.inputView = self.birthdayDatePicker; 163 | self.genderTextField.inputAccessoryView = self.keyboardToolbar; 164 | self.genderTextField.inputView = self.genderPickerView; 165 | self.phoneTextField.inputAccessoryView = self.keyboardToolbar; 166 | 167 | [previousBarItem release]; 168 | [nextBarItem release]; 169 | [spaceBarItem release]; 170 | [doneBarItem release]; 171 | } 172 | 173 | // Set localization 174 | self.nameTextField.placeholder = NSLocalizedString(@"first_name", @""); 175 | self.lastNameTextField.placeholder = NSLocalizedString(@"last_name", @""); 176 | self.emailLabel.text = [NSLocalizedString(@"email", @"") uppercaseString]; 177 | self.passwordLabel.text = [NSLocalizedString(@"password", @"") uppercaseString]; 178 | self.birthdayLabel.text = [NSLocalizedString(@"birthdate", @"") uppercaseString]; 179 | self.genderLabel.text = [NSLocalizedString(@"gender", @"") uppercaseString]; 180 | self.phoneLabel.text = [NSLocalizedString(@"phone", @"") uppercaseString]; 181 | self.phoneTextField.placeholder = NSLocalizedString(@"optional", @""); 182 | self.termsTextView.text = NSLocalizedString(@"terms", @""); 183 | 184 | // Reset labels colors 185 | [self resetLabelsColors]; 186 | } 187 | 188 | 189 | - (void)viewDidUnload 190 | { 191 | [super viewDidUnload]; 192 | // Release any retained subviews of the main view. 193 | // e.g. self.myOutlet = nil; 194 | } 195 | 196 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 197 | { 198 | // Return YES for supported orientations 199 | return (interfaceOrientation == UIInterfaceOrientationPortrait); 200 | } 201 | 202 | 203 | #pragma mark - IBActions 204 | 205 | - (IBAction)choosePhoto:(id)sender 206 | { 207 | UIActionSheet *choosePhotoActionSheet; 208 | 209 | if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 210 | choosePhotoActionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"choose_photo", @"") 211 | delegate:self 212 | cancelButtonTitle:NSLocalizedString(@"cancel", @"") 213 | destructiveButtonTitle:nil 214 | otherButtonTitles:NSLocalizedString(@"take_photo_from_camera", @""), NSLocalizedString(@"take_photo_from_library", @""), nil]; 215 | } else { 216 | choosePhotoActionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"choose_photo", @"") 217 | delegate:self 218 | cancelButtonTitle:NSLocalizedString(@"cancel", @"") 219 | destructiveButtonTitle:nil 220 | otherButtonTitles:NSLocalizedString(@"take_photo_from_library", @""), nil]; 221 | } 222 | 223 | [choosePhotoActionSheet showInView:self.view]; 224 | [choosePhotoActionSheet release]; 225 | } 226 | 227 | 228 | #pragma mark - Others 229 | 230 | - (void)signup:(id)sender 231 | { 232 | [self resignKeyboard:nil]; 233 | 234 | // Check fields 235 | 236 | // Make request 237 | } 238 | 239 | - (void)resignKeyboard:(id)sender 240 | { 241 | id firstResponder = [self getFirstResponder]; 242 | if ([firstResponder isKindOfClass:[UITextField class]]) { 243 | [firstResponder resignFirstResponder]; 244 | [self animateView:1]; 245 | [self resetLabelsColors]; 246 | } 247 | } 248 | 249 | - (void)previousField:(id)sender 250 | { 251 | id firstResponder = [self getFirstResponder]; 252 | if ([firstResponder isKindOfClass:[UITextField class]]) { 253 | NSUInteger tag = [firstResponder tag]; 254 | NSUInteger previousTag = tag == 1 ? 1 : tag - 1; 255 | [self checkBarButton:previousTag]; 256 | [self animateView:previousTag]; 257 | UITextField *previousField = (UITextField *)[self.view viewWithTag:previousTag]; 258 | [previousField becomeFirstResponder]; 259 | UILabel *nextLabel = (UILabel *)[self.view viewWithTag:previousTag + 10]; 260 | if (nextLabel) { 261 | [self resetLabelsColors]; 262 | [nextLabel setTextColor:[DBSignupViewController labelSelectedColor]]; 263 | } 264 | [self checkSpecialFields:previousTag]; 265 | } 266 | } 267 | 268 | - (void)nextField:(id)sender 269 | { 270 | id firstResponder = [self getFirstResponder]; 271 | if ([firstResponder isKindOfClass:[UITextField class]]) { 272 | NSUInteger tag = [firstResponder tag]; 273 | NSUInteger nextTag = tag == FIELDS_COUNT ? FIELDS_COUNT : tag + 1; 274 | [self checkBarButton:nextTag]; 275 | [self animateView:nextTag]; 276 | UITextField *nextField = (UITextField *)[self.view viewWithTag:nextTag]; 277 | [nextField becomeFirstResponder]; 278 | UILabel *nextLabel = (UILabel *)[self.view viewWithTag:nextTag + 10]; 279 | if (nextLabel) { 280 | [self resetLabelsColors]; 281 | [nextLabel setTextColor:[DBSignupViewController labelSelectedColor]]; 282 | } 283 | [self checkSpecialFields:nextTag]; 284 | } 285 | } 286 | 287 | - (id)getFirstResponder 288 | { 289 | NSUInteger index = 0; 290 | while (index <= FIELDS_COUNT) { 291 | UITextField *textField = (UITextField *)[self.view viewWithTag:index]; 292 | if ([textField isFirstResponder]) { 293 | return textField; 294 | } 295 | index++; 296 | } 297 | 298 | return NO; 299 | } 300 | 301 | - (void)animateView:(NSUInteger)tag 302 | { 303 | CGRect rect = self.view.frame; 304 | [UIView beginAnimations:nil context:NULL]; 305 | [UIView setAnimationDuration:0.3]; 306 | 307 | if (tag > 3) { 308 | rect.origin.y = -44.0f * (tag - 3); 309 | } else { 310 | rect.origin.y = 0; 311 | } 312 | self.view.frame = rect; 313 | [UIView commitAnimations]; 314 | } 315 | 316 | - (void)checkBarButton:(NSUInteger)tag 317 | { 318 | UIBarButtonItem *previousBarItem = (UIBarButtonItem *)[[self.keyboardToolbar items] objectAtIndex:0]; 319 | UIBarButtonItem *nextBarItem = (UIBarButtonItem *)[[self.keyboardToolbar items] objectAtIndex:1]; 320 | 321 | [previousBarItem setEnabled:tag == 1 ? NO : YES]; 322 | [nextBarItem setEnabled:tag == FIELDS_COUNT ? NO : YES]; 323 | } 324 | 325 | - (void)checkSpecialFields:(NSUInteger)tag 326 | { 327 | if (tag == BIRTHDAY_FIELD_TAG && [self.birthdayTextField.text isEqualToString:@""]) { 328 | [self setBirthdayData]; 329 | } else if (tag == GENDER_FIELD_TAG && [self.genderTextField.text isEqualToString:@""]) { 330 | [self setGenderData]; 331 | } 332 | } 333 | 334 | - (void)setBirthdayData 335 | { 336 | self.birthday = self.birthdayDatePicker.date; 337 | NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 338 | [dateFormatter setDateStyle:NSDateFormatterLongStyle]; 339 | [dateFormatter setLocale:[NSLocale currentLocale]]; 340 | self.birthdayTextField.text = [dateFormatter stringFromDate:self.birthday]; 341 | [dateFormatter release]; 342 | } 343 | 344 | - (void)setGenderData 345 | { 346 | if ([self.genderPickerView selectedRowInComponent:0] == 0) { 347 | self.genderTextField.text = NSLocalizedString(@"male", @""); 348 | self.gender = @"M"; 349 | } else { 350 | self.genderTextField.text = NSLocalizedString(@"female", @""); 351 | self.gender = @"F"; 352 | } 353 | } 354 | 355 | - (void)birthdayDatePickerChanged:(id)sender 356 | { 357 | [self setBirthdayData]; 358 | } 359 | 360 | - (void)resetLabelsColors 361 | { 362 | self.emailLabel.textColor = [DBSignupViewController labelNormalColor]; 363 | self.passwordLabel.textColor = [DBSignupViewController labelNormalColor]; 364 | self.birthdayLabel.textColor = [DBSignupViewController labelNormalColor]; 365 | self.genderLabel.textColor = [DBSignupViewController labelNormalColor]; 366 | self.phoneLabel.textColor = [DBSignupViewController labelNormalColor]; 367 | } 368 | 369 | + (UIColor *)labelNormalColor 370 | { 371 | return [UIColor colorWithRed:0.016 green:0.216 blue:0.286 alpha:1.000]; 372 | } 373 | 374 | + (UIColor *)labelSelectedColor 375 | { 376 | return [UIColor colorWithRed:0.114 green:0.600 blue:0.737 alpha:1.000]; 377 | } 378 | 379 | #pragma mark - UITextFieldDelegate 380 | 381 | - (void)textFieldDidBeginEditing:(UITextField *)textField 382 | { 383 | NSUInteger tag = [textField tag]; 384 | [self animateView:tag]; 385 | [self checkBarButton:tag]; 386 | [self checkSpecialFields:tag]; 387 | UILabel *label = (UILabel *)[self.view viewWithTag:tag + 10]; 388 | if (label) { 389 | [self resetLabelsColors]; 390 | [label setTextColor:[DBSignupViewController labelSelectedColor]]; 391 | } 392 | } 393 | 394 | - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 395 | { 396 | NSUInteger tag = [textField tag]; 397 | if (tag == BIRTHDAY_FIELD_TAG || tag == GENDER_FIELD_TAG) { 398 | return NO; 399 | } 400 | 401 | return YES; 402 | } 403 | 404 | 405 | #pragma mark - UIPickerViewDataSource 406 | 407 | - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 408 | { 409 | return 1; 410 | } 411 | 412 | - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 413 | { 414 | return 2; 415 | } 416 | 417 | 418 | #pragma mark - UIPickerViewDelegate 419 | 420 | - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view 421 | { 422 | UIImage *image = row == 0 ? [UIImage imageNamed:@"male.png"] : [UIImage imageNamed:@"female.png"]; 423 | UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 424 | imageView.frame = CGRectMake(0, 0, 32, 32); 425 | 426 | UILabel *genderLabel = [[UILabel alloc] initWithFrame:CGRectMake(40, 0, 100, 32)]; 427 | genderLabel.text = [row == 0 ? NSLocalizedString(@"male", @"") : NSLocalizedString(@"female", @"") uppercaseString]; 428 | genderLabel.textAlignment = UITextAlignmentLeft; 429 | genderLabel.backgroundColor = [UIColor clearColor]; 430 | 431 | UIView *rowView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 32)] autorelease]; 432 | [rowView insertSubview:imageView atIndex:0]; 433 | [rowView insertSubview:genderLabel atIndex:1]; 434 | 435 | [imageView release]; 436 | [genderLabel release]; 437 | 438 | return rowView; 439 | } 440 | 441 | - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 442 | { 443 | [self setGenderData]; 444 | } 445 | 446 | 447 | #pragma mark - UIActionSheetDelegate 448 | 449 | - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 450 | { 451 | NSUInteger sourceType = 0; 452 | if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 453 | switch (buttonIndex) { 454 | case 0: 455 | sourceType = UIImagePickerControllerSourceTypeCamera; 456 | break; 457 | case 1: 458 | sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 459 | break; 460 | case 2: 461 | return; 462 | } 463 | } else { 464 | if (buttonIndex == 1) { 465 | return; 466 | } else { 467 | sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 468 | } 469 | } 470 | 471 | UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 472 | imagePickerController.delegate = self; 473 | imagePickerController.allowsEditing = YES; 474 | imagePickerController.sourceType = sourceType; 475 | [self presentModalViewController:imagePickerController animated:YES]; 476 | } 477 | 478 | 479 | #pragma mark - UIImagePickerControllerDelegate 480 | 481 | - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 482 | { 483 | [picker dismissModalViewControllerAnimated:YES]; 484 | self.photo = [info objectForKey:UIImagePickerControllerEditedImage]; 485 | [self.photoButton setImage:self.photo forState:UIControlStateNormal]; 486 | } 487 | 488 | 489 | - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 490 | { 491 | [self dismissModalViewControllerAnimated:YES]; 492 | } 493 | 494 | @end 495 | -------------------------------------------------------------------------------- /DBSignup/en.lproj/MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1024 5 | 10D571 6 | 786 7 | 1038.29 8 | 460.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 112 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | IBCocoaTouchFramework 42 | 43 | 44 | 45 | 1316 46 | 47 | {320, 480} 48 | 49 | 1 50 | MSAxIDEAA 51 | 52 | NO 53 | NO 54 | 55 | IBCocoaTouchFramework 56 | YES 57 | 58 | 59 | 60 | 61 | 1 62 | 63 | IBCocoaTouchFramework 64 | NO 65 | 66 | 67 | 256 68 | {0, 0} 69 | NO 70 | YES 71 | YES 72 | IBCocoaTouchFramework 73 | 74 | 75 | YES 76 | 77 | 78 | 79 | IBCocoaTouchFramework 80 | 81 | 82 | RootViewController 83 | 84 | 85 | 1 86 | 87 | IBCocoaTouchFramework 88 | NO 89 | 90 | 91 | 92 | 93 | 94 | 95 | YES 96 | 97 | 98 | delegate 99 | 100 | 101 | 102 | 4 103 | 104 | 105 | 106 | window 107 | 108 | 109 | 110 | 5 111 | 112 | 113 | 114 | navigationController 115 | 116 | 117 | 118 | 15 119 | 120 | 121 | 122 | 123 | YES 124 | 125 | 0 126 | 127 | 128 | 129 | 130 | 131 | 2 132 | 133 | 134 | YES 135 | 136 | 137 | 138 | 139 | -1 140 | 141 | 142 | File's Owner 143 | 144 | 145 | 3 146 | 147 | 148 | 149 | 150 | -2 151 | 152 | 153 | 154 | 155 | 9 156 | 157 | 158 | YES 159 | 160 | 161 | 162 | 163 | 164 | 165 | 11 166 | 167 | 168 | 169 | 170 | 13 171 | 172 | 173 | YES 174 | 175 | 176 | 177 | 178 | 179 | 14 180 | 181 | 182 | 183 | 184 | 185 | 186 | YES 187 | 188 | YES 189 | -1.CustomClassName 190 | -2.CustomClassName 191 | 11.IBPluginDependency 192 | 13.CustomClassName 193 | 13.IBPluginDependency 194 | 2.IBAttributePlaceholdersKey 195 | 2.IBEditorWindowLastContentRect 196 | 2.IBPluginDependency 197 | 3.CustomClassName 198 | 3.IBPluginDependency 199 | 9.IBEditorWindowLastContentRect 200 | 9.IBPluginDependency 201 | 202 | 203 | YES 204 | UIApplication 205 | UIResponder 206 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 207 | RootViewController 208 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 209 | 210 | YES 211 | 212 | 213 | YES 214 | 215 | 216 | {{673, 376}, {320, 480}} 217 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 218 | DBSignupAppDelegate 219 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 220 | {{186, 376}, {320, 480}} 221 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 222 | 223 | 224 | 225 | YES 226 | 227 | 228 | YES 229 | 230 | 231 | 232 | 233 | YES 234 | 235 | 236 | YES 237 | 238 | 239 | 240 | 16 241 | 242 | 243 | 244 | YES 245 | 246 | RootViewController 247 | UITableViewController 248 | 249 | IBProjectSource 250 | RootViewController.h 251 | 252 | 253 | 254 | UIWindow 255 | UIView 256 | 257 | IBUserSource 258 | 259 | 260 | 261 | 262 | DBSignupAppDelegate 263 | NSObject 264 | 265 | YES 266 | 267 | YES 268 | navigationController 269 | window 270 | 271 | 272 | YES 273 | UINavigationController 274 | UIWindow 275 | 276 | 277 | 278 | YES 279 | 280 | YES 281 | navigationController 282 | window 283 | 284 | 285 | YES 286 | 287 | navigationController 288 | UINavigationController 289 | 290 | 291 | window 292 | UIWindow 293 | 294 | 295 | 296 | 297 | IBProjectSource 298 | DBSignupAppDelegate.h 299 | 300 | 301 | 302 | 303 | YES 304 | 305 | NSObject 306 | 307 | IBFrameworkSource 308 | Foundation.framework/Headers/NSError.h 309 | 310 | 311 | 312 | NSObject 313 | 314 | IBFrameworkSource 315 | Foundation.framework/Headers/NSFileManager.h 316 | 317 | 318 | 319 | NSObject 320 | 321 | IBFrameworkSource 322 | Foundation.framework/Headers/NSKeyValueCoding.h 323 | 324 | 325 | 326 | NSObject 327 | 328 | IBFrameworkSource 329 | Foundation.framework/Headers/NSKeyValueObserving.h 330 | 331 | 332 | 333 | NSObject 334 | 335 | IBFrameworkSource 336 | Foundation.framework/Headers/NSKeyedArchiver.h 337 | 338 | 339 | 340 | NSObject 341 | 342 | IBFrameworkSource 343 | Foundation.framework/Headers/NSObject.h 344 | 345 | 346 | 347 | NSObject 348 | 349 | IBFrameworkSource 350 | Foundation.framework/Headers/NSRunLoop.h 351 | 352 | 353 | 354 | NSObject 355 | 356 | IBFrameworkSource 357 | Foundation.framework/Headers/NSThread.h 358 | 359 | 360 | 361 | NSObject 362 | 363 | IBFrameworkSource 364 | Foundation.framework/Headers/NSURL.h 365 | 366 | 367 | 368 | NSObject 369 | 370 | IBFrameworkSource 371 | Foundation.framework/Headers/NSURLConnection.h 372 | 373 | 374 | 375 | NSObject 376 | 377 | IBFrameworkSource 378 | UIKit.framework/Headers/UIAccessibility.h 379 | 380 | 381 | 382 | NSObject 383 | 384 | IBFrameworkSource 385 | UIKit.framework/Headers/UINibLoading.h 386 | 387 | 388 | 389 | NSObject 390 | 391 | IBFrameworkSource 392 | UIKit.framework/Headers/UIResponder.h 393 | 394 | 395 | 396 | UIApplication 397 | UIResponder 398 | 399 | IBFrameworkSource 400 | UIKit.framework/Headers/UIApplication.h 401 | 402 | 403 | 404 | UIBarButtonItem 405 | UIBarItem 406 | 407 | IBFrameworkSource 408 | UIKit.framework/Headers/UIBarButtonItem.h 409 | 410 | 411 | 412 | UIBarItem 413 | NSObject 414 | 415 | IBFrameworkSource 416 | UIKit.framework/Headers/UIBarItem.h 417 | 418 | 419 | 420 | UINavigationBar 421 | UIView 422 | 423 | IBFrameworkSource 424 | UIKit.framework/Headers/UINavigationBar.h 425 | 426 | 427 | 428 | UINavigationController 429 | UIViewController 430 | 431 | IBFrameworkSource 432 | UIKit.framework/Headers/UINavigationController.h 433 | 434 | 435 | 436 | UINavigationItem 437 | NSObject 438 | 439 | 440 | 441 | UIResponder 442 | NSObject 443 | 444 | 445 | 446 | UISearchBar 447 | UIView 448 | 449 | IBFrameworkSource 450 | UIKit.framework/Headers/UISearchBar.h 451 | 452 | 453 | 454 | UISearchDisplayController 455 | NSObject 456 | 457 | IBFrameworkSource 458 | UIKit.framework/Headers/UISearchDisplayController.h 459 | 460 | 461 | 462 | UITableViewController 463 | UIViewController 464 | 465 | IBFrameworkSource 466 | UIKit.framework/Headers/UITableViewController.h 467 | 468 | 469 | 470 | UIView 471 | 472 | IBFrameworkSource 473 | UIKit.framework/Headers/UITextField.h 474 | 475 | 476 | 477 | UIView 478 | UIResponder 479 | 480 | IBFrameworkSource 481 | UIKit.framework/Headers/UIView.h 482 | 483 | 484 | 485 | UIViewController 486 | 487 | 488 | 489 | UIViewController 490 | 491 | IBFrameworkSource 492 | UIKit.framework/Headers/UIPopoverController.h 493 | 494 | 495 | 496 | UIViewController 497 | 498 | IBFrameworkSource 499 | UIKit.framework/Headers/UISplitViewController.h 500 | 501 | 502 | 503 | UIViewController 504 | 505 | IBFrameworkSource 506 | UIKit.framework/Headers/UITabBarController.h 507 | 508 | 509 | 510 | UIViewController 511 | UIResponder 512 | 513 | IBFrameworkSource 514 | UIKit.framework/Headers/UIViewController.h 515 | 516 | 517 | 518 | UIWindow 519 | UIView 520 | 521 | IBFrameworkSource 522 | UIKit.framework/Headers/UIWindow.h 523 | 524 | 525 | 526 | 527 | 0 528 | IBCocoaTouchFramework 529 | 530 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 531 | 532 | 533 | 534 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 535 | 536 | 537 | YES 538 | DBSignup.xcodeproj 539 | 3 540 | 112 541 | 542 | 543 | -------------------------------------------------------------------------------- /DBSignup/DBSignupViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1056 5 | 11A511 6 | 1617 7 | 1138 8 | 566.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 534 12 | 13 | 14 | YES 15 | IBProxyObject 16 | IBUIImageView 17 | IBUILabel 18 | IBUIButton 19 | IBUITextField 20 | IBUITextView 21 | IBUIView 22 | 23 | 24 | YES 25 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 26 | 27 | 28 | YES 29 | 30 | YES 31 | 32 | 33 | 34 | 35 | YES 36 | 37 | IBFilesOwner 38 | IBCocoaTouchFramework 39 | 40 | 41 | IBFirstResponder 42 | IBCocoaTouchFramework 43 | 44 | 45 | 46 | 274 47 | 48 | YES 49 | 50 | 51 | 274 52 | {{10, 10}, {301, 325}} 53 | 54 | 55 | 56 | NO 57 | IBCocoaTouchFramework 58 | 59 | NSImage 60 | background.png 61 | 62 | 63 | 64 | 65 | 292 66 | {{116, 18}, {185, 31}} 67 | 68 | 69 | 70 | NO 71 | YES 72 | 1 73 | IBCocoaTouchFramework 74 | 0 75 | 76 | Name 77 | 78 | 3 79 | MAA 80 | 81 | 2 82 | 83 | 84 | 85 | HelveticaNeue 86 | 15 87 | 16 88 | 89 | YES 90 | 17 91 | 92 | IBCocoaTouchFramework 93 | 94 | 1 95 | 96 | 97 | 98 | 292 99 | {{116, 61}, {185, 31}} 100 | 101 | 102 | 103 | NO 104 | YES 105 | 2 106 | IBCocoaTouchFramework 107 | 0 108 | 109 | Last name 110 | 111 | 3 112 | MAA 113 | 114 | 115 | 116 | YES 117 | 17 118 | 119 | IBCocoaTouchFramework 120 | 121 | 1 122 | 123 | 124 | 125 | 292 126 | {{117, 122}, {189, 31}} 127 | 128 | 129 | 130 | NO 131 | YES 132 | 3 133 | IBCocoaTouchFramework 134 | 0 135 | 136 | 137 | 3 138 | MAA 139 | 140 | 141 | 142 | YES 143 | 17 144 | 145 | 7 146 | IBCocoaTouchFramework 147 | 148 | 149 | 150 | 151 | 292 152 | {{117, 166}, {189, 31}} 153 | 154 | 155 | 156 | NO 157 | YES 158 | 4 159 | IBCocoaTouchFramework 160 | 0 161 | 162 | 163 | 3 164 | MAA 165 | 166 | 167 | 168 | YES 169 | 17 170 | 171 | 1 172 | YES 173 | IBCocoaTouchFramework 174 | 175 | 176 | 177 | 178 | 292 179 | {{117, 210}, {189, 31}} 180 | 181 | 182 | 183 | NO 184 | YES 185 | 5 186 | IBCocoaTouchFramework 187 | 0 188 | 189 | 190 | 3 191 | MAA 192 | 193 | 194 | 195 | YES 196 | 17 197 | 198 | IBCocoaTouchFramework 199 | 200 | 201 | 202 | 203 | 292 204 | {{117, 254}, {189, 31}} 205 | 206 | 207 | 208 | NO 209 | YES 210 | 6 211 | IBCocoaTouchFramework 212 | 0 213 | 214 | 215 | 3 216 | MAA 217 | 218 | 219 | 220 | YES 221 | 17 222 | 223 | IBCocoaTouchFramework 224 | 225 | 226 | 227 | 228 | 292 229 | {{117, 297}, {189, 31}} 230 | 231 | 232 | 233 | NO 234 | YES 235 | 7 236 | IBCocoaTouchFramework 237 | 0 238 | 239 | Optional 240 | 241 | 3 242 | MAA 243 | 244 | 245 | 246 | YES 247 | 17 248 | 249 | 5 250 | IBCocoaTouchFramework 251 | 252 | 253 | 254 | 255 | 292 256 | {{20, 127}, {89, 21}} 257 | 258 | 259 | 260 | 261 | 3 262 | MSAwAA 263 | 264 | NO 265 | YES 266 | 7 267 | 13 268 | NO 269 | IBCocoaTouchFramework 270 | EMAIL 271 | 272 | HelveticaNeue-Bold 273 | 11 274 | 16 275 | 276 | 277 | 1 278 | MC4wMTU2ODYyNzQ1MSAwLjIxNTY4NjI3NDUgMC4yODYyNzQ1MDk4AA 279 | 280 | 281 | 1 282 | 10 283 | 284 | 285 | 286 | 292 287 | {{20, 171}, {89, 21}} 288 | 289 | 290 | 291 | NO 292 | YES 293 | 7 294 | 14 295 | NO 296 | IBCocoaTouchFramework 297 | PASSWORD 298 | 299 | 300 | 1 301 | MC4wMTU2ODYyNzQ1MSAwLjIxNTY4NjI3NDUgMC4yODYyNzQ1MDk4AA 302 | 303 | 304 | 1 305 | 10 306 | 307 | 308 | 309 | 292 310 | {{20, 215}, {89, 21}} 311 | 312 | 313 | 314 | NO 315 | YES 316 | 7 317 | 15 318 | NO 319 | IBCocoaTouchFramework 320 | BIRTHDAY 321 | 322 | 323 | 1 324 | MC4wMTU2ODYyNzQ1MSAwLjIxNTY4NjI3NDUgMC4yODYyNzQ1MDk4AA 325 | 326 | 327 | 1 328 | 10 329 | 330 | 331 | 332 | 292 333 | {{20, 259}, {89, 21}} 334 | 335 | 336 | 337 | NO 338 | YES 339 | 7 340 | 16 341 | NO 342 | IBCocoaTouchFramework 343 | GENDER 344 | 345 | 346 | 347 | 1 348 | 10 349 | 350 | 351 | 352 | 292 353 | {{20, 302}, {89, 21}} 354 | 355 | 356 | 357 | NO 358 | YES 359 | 7 360 | 17 361 | NO 362 | IBCocoaTouchFramework 363 | PHONE 364 | 365 | 366 | 367 | 1 368 | 10 369 | 370 | 371 | 372 | 292 373 | {{10, 348}, {301, 58}} 374 | 375 | 376 | 377 | 378 | 1 379 | MSAxIDEgMAA 380 | 381 | YES 382 | YES 383 | IBCocoaTouchFramework 384 | NO 385 | terms 386 | 387 | Helvetica 388 | 11 389 | 16 390 | 391 | 1 392 | 393 | 2 394 | IBCocoaTouchFramework 395 | 396 | 2 397 | 398 | 399 | 400 | 292 401 | {{10, 10}, {86, 86}} 402 | 403 | 404 | 405 | NO 406 | IBCocoaTouchFramework 407 | 0 408 | 0 409 | 410 | Helvetica-Bold 411 | 15 412 | 16 413 | 414 | 415 | 3 416 | MQA 417 | 418 | 419 | 1 420 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 421 | 422 | 423 | 3 424 | MC41AA 425 | 426 | 427 | 428 | {{0, 64}, {320, 416}} 429 | 430 | 431 | 432 | 433 | 1 434 | MC45MDE5NjA3ODQzIDAuOTAxOTYwNzg0MyAwLjkwMTk2MDc4NDMAA 435 | 436 | 437 | 438 | NO 439 | 440 | IBCocoaTouchFramework 441 | 442 | 443 | 444 | 445 | YES 446 | 447 | 448 | view 449 | 450 | 451 | 452 | 3 453 | 454 | 455 | 456 | nameTextField 457 | 458 | 459 | 460 | 7 461 | 462 | 463 | 464 | lastNameTextField 465 | 466 | 467 | 468 | 8 469 | 470 | 471 | 472 | emailTextField 473 | 474 | 475 | 476 | 14 477 | 478 | 479 | 480 | passwordTextField 481 | 482 | 483 | 484 | 15 485 | 486 | 487 | 488 | birthdayTextField 489 | 490 | 491 | 492 | 16 493 | 494 | 495 | 496 | genderTextField 497 | 498 | 499 | 500 | 17 501 | 502 | 503 | 504 | phoneTextField 505 | 506 | 507 | 508 | 18 509 | 510 | 511 | 512 | delegate 513 | 514 | 515 | 516 | 24 517 | 518 | 519 | 520 | delegate 521 | 522 | 523 | 524 | 25 525 | 526 | 527 | 528 | delegate 529 | 530 | 531 | 532 | 26 533 | 534 | 535 | 536 | delegate 537 | 538 | 539 | 540 | 27 541 | 542 | 543 | 544 | delegate 545 | 546 | 547 | 548 | 28 549 | 550 | 551 | 552 | delegate 553 | 554 | 555 | 556 | 29 557 | 558 | 559 | 560 | delegate 561 | 562 | 563 | 564 | 30 565 | 566 | 567 | 568 | birthdayLabel 569 | 570 | 571 | 572 | 31 573 | 574 | 575 | 576 | emailLabel 577 | 578 | 579 | 580 | 32 581 | 582 | 583 | 584 | genderLabel 585 | 586 | 587 | 588 | 33 589 | 590 | 591 | 592 | passwordLabel 593 | 594 | 595 | 596 | 34 597 | 598 | 599 | 600 | phoneLabel 601 | 602 | 603 | 604 | 35 605 | 606 | 607 | 608 | termsTextView 609 | 610 | 611 | 612 | 40 613 | 614 | 615 | 616 | photoButton 617 | 618 | 619 | 620 | 43 621 | 622 | 623 | 624 | choosePhoto: 625 | 626 | 627 | 7 628 | 629 | 44 630 | 631 | 632 | 633 | 634 | YES 635 | 636 | 0 637 | 638 | 639 | 640 | 641 | 642 | 1 643 | 644 | 645 | YES 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | -1 666 | 667 | 668 | File's Owner 669 | 670 | 671 | -2 672 | 673 | 674 | 675 | 676 | 4 677 | 678 | 679 | 680 | 681 | 5 682 | 683 | 684 | 685 | 686 | 6 687 | 688 | 689 | 690 | 691 | 9 692 | 693 | 694 | 695 | 696 | 10 697 | 698 | 699 | 700 | 701 | 11 702 | 703 | 704 | 705 | 706 | 12 707 | 708 | 709 | 710 | 711 | 13 712 | 713 | 714 | 715 | 716 | 19 717 | 718 | 719 | 720 | 721 | 20 722 | 723 | 724 | 725 | 726 | 21 727 | 728 | 729 | 730 | 731 | 22 732 | 733 | 734 | 735 | 736 | 23 737 | 738 | 739 | 740 | 741 | 38 742 | 743 | 744 | 745 | 746 | 42 747 | 748 | 749 | 750 | 751 | 752 | 753 | YES 754 | 755 | YES 756 | -1.CustomClassName 757 | -1.IBPluginDependency 758 | -2.CustomClassName 759 | -2.IBPluginDependency 760 | 1.IBPluginDependency 761 | 10.IBPluginDependency 762 | 11.IBPluginDependency 763 | 12.IBPluginDependency 764 | 13.IBPluginDependency 765 | 19.IBPluginDependency 766 | 20.IBPluginDependency 767 | 21.IBPluginDependency 768 | 22.IBPluginDependency 769 | 23.IBPluginDependency 770 | 38.IBPluginDependency 771 | 4.IBPluginDependency 772 | 42.IBPluginDependency 773 | 5.IBPluginDependency 774 | 6.IBPluginDependency 775 | 9.IBPluginDependency 776 | 777 | 778 | YES 779 | DBSignupViewController 780 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 781 | UIResponder 782 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 783 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 784 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 785 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 786 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 787 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 788 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 789 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 790 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 791 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 792 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 793 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 794 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 795 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 796 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 797 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 798 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 799 | 800 | 801 | 802 | YES 803 | 804 | 805 | 806 | 807 | 808 | YES 809 | 810 | 811 | 812 | 813 | 44 814 | 815 | 816 | 817 | YES 818 | 819 | DBSignupViewController 820 | UIViewController 821 | 822 | choosePhoto: 823 | id 824 | 825 | 826 | choosePhoto: 827 | 828 | choosePhoto: 829 | id 830 | 831 | 832 | 833 | YES 834 | 835 | YES 836 | birthdayLabel 837 | birthdayTextField 838 | emailLabel 839 | emailTextField 840 | genderLabel 841 | genderTextField 842 | lastNameTextField 843 | nameTextField 844 | passwordLabel 845 | passwordTextField 846 | phoneLabel 847 | phoneTextField 848 | photoButton 849 | termsTextView 850 | 851 | 852 | YES 853 | UILabel 854 | UITextField 855 | UILabel 856 | UITextField 857 | UILabel 858 | UITextField 859 | UITextField 860 | UITextField 861 | UILabel 862 | UITextField 863 | UILabel 864 | UITextField 865 | UIButton 866 | UITextView 867 | 868 | 869 | 870 | YES 871 | 872 | YES 873 | birthdayLabel 874 | birthdayTextField 875 | emailLabel 876 | emailTextField 877 | genderLabel 878 | genderTextField 879 | lastNameTextField 880 | nameTextField 881 | passwordLabel 882 | passwordTextField 883 | phoneLabel 884 | phoneTextField 885 | photoButton 886 | termsTextView 887 | 888 | 889 | YES 890 | 891 | birthdayLabel 892 | UILabel 893 | 894 | 895 | birthdayTextField 896 | UITextField 897 | 898 | 899 | emailLabel 900 | UILabel 901 | 902 | 903 | emailTextField 904 | UITextField 905 | 906 | 907 | genderLabel 908 | UILabel 909 | 910 | 911 | genderTextField 912 | UITextField 913 | 914 | 915 | lastNameTextField 916 | UITextField 917 | 918 | 919 | nameTextField 920 | UITextField 921 | 922 | 923 | passwordLabel 924 | UILabel 925 | 926 | 927 | passwordTextField 928 | UITextField 929 | 930 | 931 | phoneLabel 932 | UILabel 933 | 934 | 935 | phoneTextField 936 | UITextField 937 | 938 | 939 | photoButton 940 | UIButton 941 | 942 | 943 | termsTextView 944 | UITextView 945 | 946 | 947 | 948 | 949 | IBProjectSource 950 | ./Classes/DBSignupViewController.h 951 | 952 | 953 | 954 | 955 | 0 956 | IBCocoaTouchFramework 957 | 958 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 959 | 960 | 961 | YES 962 | 3 963 | 964 | background.png 965 | {301, 325} 966 | 967 | 534 968 | 969 | 970 | --------------------------------------------------------------------------------