首页 > 代码库 > 登陆和注册总结
登陆和注册总结
#import "ViewController.h"#define USERNAME @"nameTextField"#define PASSWORD @"pswTextField"@implementation ViewController@synthesize recordBtn;@synthesize cellRightArray;- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning];}#pragma mark - View lifecycle- (void)viewDidLoad{ [super viewDidLoad]; cellRightArray = [[NSMutableArray alloc]init];//作为属性变量的数组如果不初始化是不能用的,这个数组用来保存UITextFiled中的用户名和密码。 recordPwd = NO;//刚开始把是否保存密码设置为NO UITableView *table = [[UITableView alloc]initWithFrame:CGRectMake(10, 20, 300, 100) style:UITableViewStyleGrouped]; table.delegate = self; table.dataSource = self; table.backgroundColor = [UIColor whiteColor]; [self.view setBackgroundColor:[UIColor whiteColor]]; recordBtn = [[UIImageView alloc]init];//这个就是那个带钩的小框框,之前尝试用UIButton,但是不好切换button的backgroundView,所以就换了UIImageView,给它添加手势。 recordBtn.frame = CGRectMake(180, 130, 40, 40); recordBtn.userInteractionEnabled = YES; UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(110, 130, 100, 40)]; label.text = @"记住密码"; [self.view addSubview:label]; [label release]; UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(recoredBtnClick)];//添加了一个手势,单击触发事件 tapGesture.numberOfTapsRequired = 1;//点击一下 [recordBtn addGestureRecognizer:tapGesture];这里注意是在UIImageView上添加手势 [self readUserInfoFromFile];//在图片初始化之前先读取plist文件,判断recordPwd if (recordPwd) { recordBtn.image = [UIImage imageNamed:@"check_on@2x.png"]; } else{ recordBtn.image = [UIImage imageNamed:@"check_off@2x.png"]; } [self.view addSubview:table]; [self.view addSubview:recordBtn]; [tapGesture release]; [table release]; }- (void)viewDidUnload{ [super viewDidUnload]; self.recordBtn = nil; self.cellRightArray = nil;}- (void)readUserInfoFromFile//从plist读取数据{ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent:@"data.plist"];
//以上的三句话获取沙盒中data.plist的路径。 NSLog(@"文件路径:%@",path); NSMutableDictionary *saveStock = [[NSMutableDictionary alloc]initWithContentsOfFile:path];//从该路径读取文件,注意这里是读取,跟创建plist的init方法不同,看下面就知道了 recordPwd = [[saveStock objectForKey:@"recordPwd"]boolValue];//@"recordPwd"是一个key,存到字典何从字典中取值都要用到 if (!recordPwd) { nameTextField.text = @""; pswTextField.text = @""; [saveStock removeAllObjects];//移除字典内所有元素 } else{ nameTextField.text = [saveStock objectForKey:USERNAME]; pswTextField.text = [saveStock objectForKey:PASSWORD]; [pswTextField setSecureTextEntry:YES];//密码设置为暗文 } NSLog(@"nameTextField.text==%@,pswTextField.text=%@",nameTextField.text,pswTextField.text); NSLog(@"读取saveStock=%@",saveStock); [saveStock release];}//把是否记住密码信息写进data.plist文件- (void)writePasswordToFile{ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent:@"data.plist"]; NSLog(@"filePath:%@",path); NSMutableDictionary *data = http://www.mamicode.com/[[NSMutableDictionary alloc]init];//字典初始化,注意这里的init方法,跟-(void)readUserInfoFromFile方法中的字典初始化方法不同。
NSLog(@"self.cellRightArray=%@",self.cellRightArray); if (nameTextField.text.length != 0||pswTextField.text.length != 0) {//如果输入不为空 [data setObject:nameTextField.text forKey:USERNAME];//用户名和密码存入字典,这里的key用了宏定义,其实@"recordPwd"也可以用,在文中多次使用比较省事 [data setObject:pswTextField.text forKey:PASSWORD]; } [data setObject:[NSNumber numberWithBool:recordPwd] forKey:@"recordPwd"]; [data writeToFile:path atomically:YES]; NSLog(@"是否记住密码信息==%@",data); [data release];}- (void)recoredBtnClick//点击是否记住密码{ UIImage *image = [[UIImage alloc]init]; if (recordPwd) { recordBtn.image = [UIImage imageNamed:@"check_off@2x.png"]; recordPwd = NO; } else{ recordBtn.image = [UIImage imageNamed:@"check_on@2x.png"]; recordPwd = YES; } [self writePasswordToFile]; [image release];}#pragma mark -tableView代理方法实现-- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ NSArray *left = [NSArray arrayWithObjects:@"姓名:",@"密码:", nil]; NSArray *right = [NSArray arrayWithObjects:@"请输入用户名",@"请输入密码", nil]; static NSString *cellIdentifier = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]autorelease]; cell.selectionStyle = UITableViewCellSelectionStyleNone; UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 8, 80, 30)]; label.text = [NSString stringWithFormat:[left objectAtIndex:indexPath.row]]; label.backgroundColor = [UIColor clearColor]; [cell.contentView addSubview:label]; [label release]; if (indexPath.row == 0 ){ nameTextField = [[[UITextField alloc]initWithFrame:CGRectMake(90, 10, 140, 30)]autorelease]; nameTextField.placeholder = [NSString stringWithFormat:[right objectAtIndex:indexPath.row]]; nameTextField.delegate = self; [cell.contentView addSubview:nameTextField]; }else{ pswTextField = [[[UITextField alloc]initWithFrame:CGRectMake(90, 10, 140, 30)]autorelease]; pswTextField.placeholder = [NSString stringWithFormat:[right objectAtIndex:indexPath.row]]; pswTextField.delegate = self; [pswTextField setSecureTextEntry:YES]; [cell.contentView addSubview:pswTextField];//本人智商不够,所以才去这种笨写法,不知道有没高手能用循环创建来写? [self readUserInfoFromFile];//还要再读取一次,如果注销会发生什么?大家可以去试试 } } return cell;}- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return 2;}- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event//点击空白处隐藏键盘{ [nameTextField resignFirstResponder]; [pswTextField resignFirstResponder];}- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated];}- (void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated];}- (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated];}- (void)viewDidDisappear:(BOOL)animated{ [super viewDidDisappear:animated];}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ // Return YES for supported orientations return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);}- (void)dealloc { [cellRightArray release]; [nameTextField release]; [pswTextField release]; [recordBtn release]; [super dealloc];}@end
登陆和注册总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。