一.ViewController.h中代码
// // ViewController.h // QQRegLogin // // Created by jabez.huang on 15/6/15. // Copyright (c) 2015年 jabez.huang. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *QQNumber; @property (weak, nonatomic) IBOutlet UITextField *QQPassword; @property (weak, nonatomic) IBOutlet UILabel *ResultMessage; - (IBAction)Login:(id)sender; @end
二.ViewController.m中代码
// // ViewController.m // QQRegLogin // // Created by jabez.huang on 15/6/15. // Copyright (c) 2015年 jabez.huang. All rights reserved. // #import "ViewController.h" #define PATH @"/Users/feifanchengxuyuan/Desktop/QQNumberFile.plist" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //设置QQ密码文本框为密码框 _QQPassword.secureTextEntry = YES; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (IBAction)Login:(id)sender { //注意:当文件里多次使用对象方法时,建议使用间接。 NSString *qqNumber = _QQNumber.text; NSString *qqPassword = _QQPassword.text; //判断QQ号码最小的位数为5位 , QQ密码最小的位数为6位 if( ([qqNumber length] > 4 ) && ([qqPassword length] > 5)){ //创建一个NSFileManager对象 NSFileManager *fileManager = [NSFileManager defaultManager]; //创建一个文件流对象 NSData *data = [fileManager contentsAtPath: PATH]; //创建一个解档 并连接文件流 NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData: data]; //通过相关的key解档相关的QQ字典 NSDictionary *dict = [unArchiver decodeObjectForKey: @"QQ"]; //如果登录输入的qqNumber在字典里找到了qqPassword也就是说,qqNumber 和 qqPassword输入正确,也就是登录成功 if ( [dict[qqNumber] isEqualToString: qqPassword] ){ _ResultMessage.text = @"登录成功!"; }else{ _ResultMessage.text = @"QQ号码或QQ密码错误!"; } }else{ _ResultMessage.text = @"QQ号码或QQ密码错误!"; } } @end
三.RegViewController.h
// // RegViewController.h // QQRegLogin // // Created by jabez.huang on 15/6/15. // Copyright (c) 2015年 jabez.huang. All rights reserved. // #import <UIKit/UIKit.h> @interface RegViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *QQRegNumber; @property (weak, nonatomic) IBOutlet UITextField *QQRegPassword; @property (weak, nonatomic) IBOutlet UITextField *QQSureRegPassword; @property (weak, nonatomic) IBOutlet UILabel *ResultMessage; - (IBAction)QQRegButton:(id)sender; @end
四.RegViewController.m
// // RegViewController.m // QQRegLogin // // Created by jabez.huang on 15/6/15. // Copyright (c) 2015年 jabez.huang. All rights reserved. // #import "RegViewController.h" #define PATH @"/Users/feifanchengxuyuan/Desktop/QQNumberFile.plist" @interface RegViewController () @end @implementation RegViewController - (void)viewDidLoad { [super viewDidLoad]; //设置QQ号码文本框不可用,因为是自动生成的 _QQRegNumber.enabled = NO; //设置QQ密码文本框为密码框 _QQRegPassword.secureTextEntry = YES; //设置QQ确认密码文本框为密码框 _QQSureRegPassword.secureTextEntry = YES; // Do any additional setup after loading the view. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ - (IBAction)QQRegButton:(id)sender { //QQ密码和QQ确认密码不能小于6位 if( [_QQRegPassword.text length] < 6 || [_QQSureRegPassword.text length] < 6){ _ResultMessage.text = @"密码或确认密码小于6位"; }else if( ![_QQRegPassword.text isEqualToString: _QQSureRegPassword.text ]){ //两次输入密码不相等 _ResultMessage.text = @"两次输入密码不相等!"; }else{ //根据当前时间戳得到相关的QQ号 //注意:当申请人多的时候,建议使用毫秒来标识QQ号码唯一性 NSDate *date = [NSDate date]; NSInteger QQNumber = (long)[date timeIntervalSince1970]; //把当前生成的QQ号码写入QQ号码控件里 _QQRegNumber.text = [NSString stringWithFormat: @"%li", QQNumber]; //提取相关的已有的账号信息,防止新数据覆盖老数据,把新数据和老数据合并组合加入字典里 //创建一个NSFileManager对象 NSFileManager *fileManager = [NSFileManager defaultManager]; //创建一个NSData文件流对象 NSData *data = [fileManager contentsAtPath: PATH]; //创建一个解档对象 NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData: data]; //定义一个可变的字典,给予一个初始的空间 NSMutableDictionary *mudict = [NSMutableDictionary dictionaryWithCapacity:10]; //把原始老的相关账号数据放入字典临时存储 [mudict addEntriesFromDictionary: [unArchiver decodeObjectForKey: @"QQ"]]; //可变字典加入老数据 //以下为新数据,注意:写文件的时候的字典数据为新数据+老数据 NSMutableData *mudata = [[NSMutableData alloc]init]; NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData: mudata]; //归档写入文件之前,先把新数据也加入可变字典,这样字典里目前就有了新数据 + 老数据 [mudict addEntriesFromDictionary:@{_QQRegNumber.text:_QQRegPassword.text} ]; //把组合好的(新数据+老数据) 归档 [archiver encodeObject: mudict forKey:@"QQ"]; //注意:必须写finishEncoding,否则可能为空 [archiver finishEncoding]; //归档以后写入文件 [mudata writeToFile:PATH atomically:YES]; //显示提示信息 _ResultMessage.text = @"注册成功!"; // NSLog( @"%@", [unArchiver decodeObjectForKey: @"QQ"] ); } } @end
五.跳转下一页面
添加页面View Controller,然后用Button按钮选择show,同样返回也用Button按钮选择show
六.跳转页面设置
选择右侧Custon Class中Class中的ViewController
或者新建一个,iOS->Source->Cocoa Touch Class选择UIViewController